2011年9月9日星期五

python 笔记(1)

一个关于python类的属性的疑问
(生自dive into python中文p91

类中可以有数据属性,如
class counter:
    count=0
    def __init__(self):
        self.__class__.count+=1
这时表现出来的count类似“静态属性”,每构造一个实例,count值加1
我使用下面使用这个函数来打印值
def printme(thestr):
    print thestr,':',eval(thestr)
那么下面这段程序
printme('counter.count')
c=counter()
printme('c.count')
printme('counter.count')
d=counter()
printme('d.count')
printme('c.count')
printme('counter.count')
 会输出
counter.count : 0
c.count : 1
counter.count : 1
d.count : 2
c.count : 2
counter.count : 2
到此为止表现正常
但如果在程序中手动改变某个实例的属性值比如令c.count=10
那么c.count就会脱离类的控制,下面是个例子
printme('counter.count')
c=counter()
printme('c.count')
printme('counter.count')
c.count=10
printme('c.count')
printme('counter.count')
d=counter()
printme('d.count')
printme('c.count')
printme('counter.count')
输出
counter.count : 0
c.count : 1
counter.count : 1
c.count : 10
counter.count : 1
d.count : 2
c.count : 10
counter.count : 2
这绝对很奇怪啊╮(╯▽╰)╭

没有评论:

发表评论