cls vs. self vs. Class call in python
我是Python的初学者,用Lutz的书来理解
这是从这本书中衍生出来的一个例子。我不确定为什么父类(
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class Spam1: numInstances = 0 def count(cls): cls.numInstances += 1 print("In count -> number of instances: cls, Spam", cls.numInstances, Spam1.numInstances) def __init__(self): print("-----") print("In init, before -> number of instances: self, Spam",self.numInstances,Spam1.numInstances ) self.count() print("In init, after -> number of instances: self, Spam",self.numInstances,Spam1.numInstances ) print("-----") count=classmethod(count) class Sub1(Spam1): numInstances = 0 class Other1(Spam1): pass a=Spam1() #Output after increment: 1,1,1 (self, cls, Spam1) b=Spam1() #Output after increment: 2,2,2 (self, cls, Spam1) c=Spam1() #Output after increment: 3,3,3 (self, cls, Spam1) d=Sub1() #Output after increment: 1,1,3 (self, cls, Spam1) e=Sub1() #Output after increment: 2,2,3 (self, cls, Spam1) f=Other1() #Output after increment: 4,4,3 (self, cls, Spam1) |
我花了一天时间尝试调试这段代码,但我无法理解
具体来说,我的问题是:
a)创建
我试图回答这个问题:
a.i)据我所知,
a.ii)
b)我对
我相信我的问题很基本。我希望有人能帮助我。我迷路了。
你有几个误解:
当您使用
当您处理
代码中有三个不同的类属性,名为