关于Person.__count
在__init__里用Person.__count来获取__count是否会增加耦合度?万一以后class Person改名叫SuperPerson了呢?有没有类似cls.__count的方法在__init__里获取__count?
在__init__里用Person.__count来获取__count是否会增加耦合度?万一以后class Person改名叫SuperPerson了呢?有没有类似cls.__count的方法在__init__里获取__count?
2017-09-13
可以在类中定义一个方法前面加上@classmethod来表示这是一个静态方法。这样该方法会传入一个cls的参数,通过参数就可以拿到类了,调用cls.__count就可以了。
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()举报