IT培訓(xùn)網(wǎng)
IT在線(xiàn)學(xué)習(xí)
1、類(lèi)中的魔法方法
魔法方法是類(lèi)或?qū)嵗谔厥馇闆r下自動(dòng)執(zhí)行的方法。魔法方法除了前文已經(jīng)介紹過(guò)的__init__()構(gòu)造方法外,還有__str__()打印方法和__del__()析構(gòu)方法。
(1)__str__()打印方法
__str__()打印方法是打印描述實(shí)例信息的魔法方法,能夠打印指定的信息,并自動(dòng)執(zhí)行。其語(yǔ)法格式如下:
class 類(lèi)名(object):
def __str__(self):
方法體
下面是一個(gè)使用__str__()打印方法的示例:
- >>> class Car(object):
- ... def __init__(self, brand, color):
- ... self.brand = brand
- ... self.color = color
- ... self.max_speed = 240
- ... def __str__(self):
- ... return '品牌是{},顏色是{},最大時(shí)速是{}。'.format(self.brand, self.color, self.max_speed)
- ...
- >>> falali = Car('法拉利', '白色')
- >>> print(falali)
- 品牌是法拉利,顏色是白色,最大時(shí)速是240。
上述程序中,Car類(lèi)的__init__()構(gòu)造方法接收小汽車(chē)的品牌和顏色參數(shù)賦值給實(shí)例屬性,并且初始化一個(gè)最高時(shí)速實(shí)例屬性;__str__()打印方法的功能是一個(gè)格式化字符串,描述了小汽車(chē)的屬性。使用Car類(lèi)創(chuàng)建實(shí)例falali,并傳入兩個(gè)參數(shù),使用print()函數(shù)打印實(shí)例,此時(shí)自動(dòng)調(diào)用了Car類(lèi)中的__str__()打印方法,打印字符串。
(2)__del__()析構(gòu)方法
__del__()析構(gòu)方法是在刪除實(shí)例時(shí)自動(dòng)運(yùn)行的魔法方法。其語(yǔ)法格式如下:
class 類(lèi)名(object):
def __del__(self):
方法體
下面是一個(gè)使用__del__()析構(gòu)方法的示例:
- >>> class Car(object):
- ... def __init__(self, brand, color):
- ... self.brand = brand
- ... self.color = color
- ... self.max_speed = 240
- ... def __del__(self):
- ... print('{}要報(bào)廢了,要去車(chē)管所注銷(xiāo)了'.format(self.brand))
- ...
- >>> falali = Car('法拉利', '白色')
- >>> print(id(falali))
- 43663600
- >>> del falali
- 法拉利要報(bào)廢了,要去車(chē)管所注銷(xiāo)了
- >>> print(id(falali))
- Traceback (most recent call last):
- File "
" , line 1, in- NameError: name 'falali' is not defined
上述程序中,Car類(lèi)中定義了一個(gè)析構(gòu)方法,其功能是打印一個(gè)格式化字符串。當(dāng)使用Car類(lèi)創(chuàng)建實(shí)例falali后,調(diào)用id()方法獲取falali實(shí)例的地址并打印;使用del falali刪除falali實(shí)例,此時(shí)自動(dòng)調(diào)用了Car類(lèi)中的__del__()析構(gòu)方法,打印字符串;再次調(diào)用id()方法獲取falali實(shí)例的地址,Python解釋器提示出錯(cuò)了,falali名稱(chēng)沒(méi)有被定義,這是因?yàn)閒alali實(shí)例已經(jīng)被刪除了。
2、類(lèi)中的靜態(tài)方法
靜態(tài)方法是類(lèi)中不對(duì)當(dāng)前屬性和方法進(jìn)行操作的方法。靜態(tài)方法的特點(diǎn)如下:
①靜態(tài)方法無(wú)隱含參數(shù)。
②無(wú)法通過(guò)self或cls調(diào)用屬性。
③使用@staticmethod裝飾。
靜態(tài)方法的語(yǔ)法格式如下:
@staticmethod
def 方法名(參數(shù)):
方法體
調(diào)用靜態(tài)方法有兩種方式,一種是采用“類(lèi)名.方法名(參數(shù))”的形式;另一種是先實(shí)例化,再采用“實(shí)例名.方法名(參數(shù))”的形式:
- >>> class Test():
- ... @staticmethod
- ... def info():
- ... print('成功進(jìn)入靜態(tài)方法')
- ...
- >>> Test.info() # 第一種調(diào)用方式
- 成功進(jìn)入靜態(tài)方法
- >>> s = Test()
- >>> s.info() # 第二種調(diào)用方式
- 成功進(jìn)入靜態(tài)方法
下面比較一下靜態(tài)方法與類(lèi)方法的相同點(diǎn)和不同點(diǎn)。
靜態(tài)方法與類(lèi)方法的相同點(diǎn)如下:
①都可以在類(lèi)內(nèi)調(diào)用。
②都可以通過(guò)實(shí)例調(diào)用。
靜態(tài)方法與類(lèi)方法的不同點(diǎn)如下:
①靜態(tài)方法沒(méi)有默認(rèn)參數(shù),類(lèi)方法第一個(gè)默認(rèn)參數(shù)為cls。
②靜態(tài)方法內(nèi)不能調(diào)用類(lèi)屬性或?qū)嵗龑傩,?lèi)方法內(nèi)只能調(diào)用類(lèi)屬性和類(lèi)方法。
更多內(nèi)容
>>本文地址:http://www.yceu.cn/zhuanye/2021/69063.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?
07月15日Java
咨詢(xún)/試聽(tīng)07月15日Python+人工智能
咨詢(xún)/試聽(tīng)07月15日Web前端
咨詢(xún)/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢(xún)/試聽(tīng)07月15日大數(shù)據(jù)
咨詢(xún)/試聽(tīng)07月15日Java
咨詢(xún)/試聽(tīng)07月15日Python+人工智能
咨詢(xún)/試聽(tīng)07月15日Web前端
咨詢(xún)/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢(xún)/試聽(tīng)07月15日大數(shù)據(jù)
咨詢(xún)/試聽(tīng)