|
|
发表于 2015-6-9 23:17:39
|
显示全部楼层
运行了楼主的程序(虽然是py3,但是这段代码中只有print函数有区别),输出是这样的:
- (Initializing aaaaa)
- I am the only person here.
- 1
- 1
- (Initializing bbbbb)
- We are 2 persons here.
- 2
- 2
- (Initializing hhhhh)
- We are 2 persons here.
- 2
- 3
复制代码
先说说我对这段程序的理解:
主程序部分是这几段代码
- swaroop = Person('aaaaa')
- swaroop.howMany()
- kalam=Person('bbbbb')
- kalam.howMany()
-
- caifei=Person('hhhhh')
- kalam.howMany()
复制代码 swaroop = Person('aaaaa')
创建一个新的Person类的实例,swaroop,会调用__init__方法,但是self.population的自增先于,Person.population的自增,所以swaroop实例的population变量是在0的基础上加1,而Person类的population变量由于Person.population += 1这一句也变成了1。然后,调用howMany方法时打印结果1,1
我语言比较渣,看图
下面的分析同理 ,值得指出的是楼主的程序中,在最后一个caifei变量创建之后,紧接着调用的并不是caifei这个变量的howMany方法而是上一个变量kalam变量的howMany方法,这也是为什么最后一次打印中self.population和Person.population打印结果不同的原因,因为这里的self指代的是kalam,另外,我尝试把self.population的自增和Person的自增改变了顺序,输出是这样的
- (Initializing aaaaa)
- We are 2 persons here.
- 2
- 1
- (Initializing bbbbb)
- We are 3 persons here.
- 3
- 2
- (Initializing hhhhh)
- We are 3 persons here.
- 3
- 3
复制代码 PS:提一句,上面的图是从一个代码分析网站截下来的,前期的学习可以多用用这样的工具,代码输入进去,点visualize按钮,然后在下来的界面中点forward可以一步步的看程序运行情况(当然你用某些ide的debug功能也是可以监控的,我只是觉得这个更直观~~),楼主学习加油
|
|