上一篇: 單例設計模式 | 手把手教你入門Python之六十一 下一篇: 繼承的使用 | 手把手教你入門Python之六十三 本文來自于千鋒教育在阿裡雲開發者社群學習中心上線課程 《Python入門2020最新大課》 ,主講人姜偉。
練習
定義一個類屬性,記錄通過這個類建立了多少個對象。
class Person(object):
__count = 0 # 類屬性
def __new__(cls, *args, **kwargs):
x = object.__new__(cls) # 申請記憶體,建立一個對象,并設定類型是 Person 類
return x
def __init__(self, name, age):
Person.__count += 1
self.name = name
self.age = age
@classmethod
def get_count(cls):
return cls.__count
# 每次建立對象,都會調用 __new__ 和 __init__ 方法
# 調用 __new__ 方法,用來申請記憶體
# 如果不重寫 __new__ 方法,它會自動找object 的 __new__
# object 的 __new__ 方法,預設實作是申請了一段記憶體,建立一個對象
p1 = Person('張三', 18)
p2 = Person('李四', 19)
p3 = Person('jack', 20)
# print(Person.count) # 3
print(p1, p2, p3)
print(Person.get_count()) # 3
# p4 = object.__new__(Person) # 申請了記憶體,建立了一個對象,并設定它的類型是Person
# p4.__init__('tony', 23)
# print(p4)