-
魔術方法
''' 魔法方法: __new__ __new__: 根據參數cls傳遞過來的類,來完成對象空間的創建 ''' class Dog: def __new__(cls, *args, **kwargs): new_obj = object.__new__(cls) print(new_obj) return new_obj def __init__(self, name): print('**************',self) self.name = name print('------------>init') def eat(self): print('{}喜歡吃肉骨頭'.format(self.name)) print('Dog=============>', id(Dog)) dog1 = Dog('大黃') print(dog1)
''' 魔術方法: 在某種場景下會自動調用的方法稱作魔術方法 類中系統的魔術方法: __new__ 創建對象的 * __init__ 給對象初始化賦值的 * __str__: 當打印對象的時候,默認出現的是<__main__.Cat object at 0x0000000002262710> 對於開發者來書不直觀不方便查看一些信息,因此需要定義__str__方法,因爲打印對象的時候會默認調用此方法 此方法的返回值必須是字符串。 __repr__: 類似__str__方法,只不過在沒有定義__str__方法的時候,就會調用__repr__方法 __del__: delete的縮寫。 對象空間回收的時候會默認調用此方法 瞭解__del__的作用,無需自己定義__del__魔術方法 __call__: 調用時機,一個對象名A,A()則默認會調用__call__方法。 瞭解 __dir__: 得到當前對象的所有屬性和方法 ''' class Cat: def __init__(self, nickname, age): self.nickname = nickname self.age = age def __str__(self): return self.nickname # def __repr__(self): # return self.nickname def __del__(self): print('-----> del', self.nickname) def __call__(self, *args, **kwargs): print('哈哈哈我被調用了') cat1 = Cat('花花', 1) print(cat1) # return self.nickname cat1() print(cat1.__dir__()) # print(cat1.__repr__()) # print(cat1.__str__()) cat2 = Cat('胖墩', 2) print(cat2) cat2() del cat1 cat3 = cat2 print(cat3) print('--------over---------')
面向對象4(魔術方法)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.