天天看點

類屬性案例練習 | 手把手教你入門Python之六十二

上一篇: 單例設計模式 | 手把手教你入門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)           

配套視訊