定義類方法 和屬性類似,方法也分實例方法和類方法。 在class中定義的全部是實例方法,實例方法第一個參數 self 是實例本身。 要在class中定義類方法,需要這么寫: class Person(object): count = 0 @classmethod def how_many(cls): return cls.count def __init__(self, name): self.name = name Person.count = Person.count + 1 print Person.how_many() p1 = Person('Bob') print Person.how_many() 通過標記一個 @classmethod,該方法將綁定到 Person 類上,而非類的實例。類方法的第一個參數將傳入類本身,通常將參數名命名為 cls,上面的 cls.count 實際上相當於 Person.count。 因為是在類上調用,而非實例上調用,因此類方法無法獲得任何實例變量,只能獲得類的引用。 任務 如果將類屬性 count 改為私有屬性__count,則外部無法讀取__score,但可以通過一個類方法獲取,請編寫類方法獲得__count值。
class Person(object):
__count = 0
def __init__(self,name):
self.name=name;
Person.__count+=1
@classmethod
def how_many(cls):
return cls.__count
print Person.how_many()
p1 = Person('Bob')
print Person.how_many()