python第六天(普通方法、類方法、靜態方法、__init__、__new__)

舉例代碼:

class A:
def init(self):
print(self)
print(“這是構造方法”)
def new(cls, *args, **kwargs):
print(id(cls))
print(“這是new 方法,相當於__init__只是最後的那盤菜,而__new__纔是得到食材”)
ret = object.new(cls)
print(ret)
return ret
@classmethod
def FA(cls):
print(“這是類方法,默認是類對象調用方法,參數最好使用默認的cls”)
@staticmethod
def FB(lalala):
print(“這是靜態方法,不像普通方法,默認對象調用,(默認self作爲函數參數00),這個方法得自己寫”)
print(id(A))
print(A())
print("#"*60)
A.FA()
a = A()
#A.FB() a.FB() #報錯,靜態方法,不像普通方法,默認對象調用
A.FB(“aaaaa”)

運行結果:

2193562339896
2193562339896
這是new 方法,相當於__init__只是最後的那盤菜,而__new__纔是得到食材
<main.A object at 0x000001FEBC74D5C0>
<main.A object at 0x000001FEBC74D5C0>
這是構造方法
<main.A object at 0x000001FEBC74D5C0>
############################################################
這是類方法,默認是類對象調用方法,參數最好使用默認的cls
2193562339896
這是new 方法,相當於__init__只是最後的那盤菜,而__new__纔是得到食材
<main.A object at 0x000001FEBC74D5C0>
<main.A object at 0x000001FEBC74D5C0>
這是構造方法
這是靜態方法,不像普通方法,默認對象調用,(默認self作爲函數參數00),這個方法得自己寫

Process finished with exit code 0

總結:

0、靜態方法,不像普通方法,默認對象調用,(默認self作爲函數參數00),這個方法調用參數得自己寫
1、 new 至少要有一個參數cls,代表要實例化的類,此參數在實例化時由Python解釋器自動 提供
2、 new 必須要有返回值,返回實例化出來的實例,這點在自己實現 new 時要特別注 意,可以return父類 new 出來的實例,或者直接是object的 new 出來的實例
3、 init 有一個參數self,就是這個 new 返回的實例, initnew 的基礎上 可以完成一些其它初始化的動作, init 不需要返回值
我們可以將類比作製造商, new 方法就是前期的原材料購買環節, init 方法就是在 有原材料的基礎上,加工,初始化商品環節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章