初学请教:class变量为什么会出错?

初学请教:class变量为什么会出错?

class School:
    members=0
    def __init__(self):
        School.members += 1
        print School.members
    def __del__(self):
        School.members -= 1
        print School.members

t=School()
s=School()

为什么这个程序在__del__(self)中运行到School.members -= 1就出错了?
提示"global name 'School' is not defined"
把School.members换成self.members
楼上的应该是误解了楼主程序的意图吧。  

__del__(self)   的作用是在删除School实例时  输出 目前School实例的数目。  

代码是没有问题的。
那就把那个类单独保存到一个模块中就可以了。

test1.py:

[Copy to clipboard] [ - ]
CODE:
class School:
    members=0
    def __init__(self):
        School.members += 1
        print School.members
    def __del__(self):
        School.members -= 1
        print School.members

test2.py

[Copy to clipboard] [ - ]
CODE:
from test1 import School
t=School()
s=School()



QUOTE:
原帖由 lvscar 于 2007-4-2 11:43 发表
楼上的应该是误解了楼主程序的意图吧。  

__del__(self)   的作用是在删除School实例时  输出 目前School实例的数目。  

代码是没有问题的。

不错
但是为什么运行的时候会出错?


QUOTE:
原帖由 firebat0 于 2007-4-3 14:16 发表

不错
但是为什么运行的时候会出错?

出错是因为类对象在实例对象之前销毁了的原因。目前还没有什么比较优雅的做法。
以前有人问过的,参考一下这里:
http://bbs.chinaunix.net/viewthread.php?tid=767395
看来python有必要引入 类似C里的 静态变量了