- 论坛徽章:
- 0
|
原帖由 Tiger_cn 于 2008-4-3 02:09 发表
代码:
class Person:
'''Represents a person.'''
population=0
def __init__(self,name):
'''Initializes the person's data.'''
self.name=name
print '(Initializing %s)' %self.name
#When this person is created, he/she adds to the population
Person.population+=1
...
对于两个问题
1 运行两次,结果不同的原因,在于标红的代码
population 是class Person的class attribute (在__init__函数中的attribute是data attribute).
class attribute是类本身的属性,在创建任何类实例之前就有效的,即可以通过对类本身进行引用,也可以通过类实例进行引用
class attribute的值作用域在于类,一旦在某个实例中被修改后,对类本身以及其它实例也有影响。
所以没有任何实例之前, person = 0,第一次执行时person=1,第二次person=2,依次递加。
如果调用__del__,运行次数不同,结果也应该不同的。
2 由于在win下面用的是PythonWin或eclipse,所以不太清楚PyScripter的调试技巧...汗 :wink: |
|