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