关于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()
举报