如果要创建类变量,则必须在任何类方法之外声明它(但仍在类定义内):
class Example(object):
somevariable = 'class variable'
有了这个,您现在可以访问您的类变量。
>> Example.somevariable
'class variable'
您的示例不起作用的原因是您正在为instance
变量赋值。
两者的区别在于,class
一旦创建了类对象,就会创建一个变量。而instance
一旦对象被实例化并且只有在它们被分配之后,就会创建一个变量。
class Example(object):
def doSomething(self):
self.othervariable = 'instance variable'
>> foo = Example()
这里我们创建了一个 的实例Example
,但是如果我们尝试访问othervariable
我们会得到一个错误:
>> foo.othervariable
AttributeError: 'Example' object has no attribute 'othervariable'
由于othervariable
是在内部分配的doSomething
——而且我们还没有调用 ityet——,所以它不存在。
>> foo.doSomething()
>> foo.othervariable
'instance variable'
__init__
是一种特殊方法,只要发生类实例化就会自动调用。
class Example(object):
def __init__(self):
self.othervariable = 'instance variable'
>> foo = Example()
>> foo.othervariable
'instance variable'