我怎样才能在类的方法定义中引用一个类的共享?如何在类的方法定义中引用一个类的授权?
例如:
>>> class C:
... a = 3
... def f(self):
... # nonlocal a # nonlocal doesn't work
... # a = 4 # create a local variable a in f
... self.a = 4
...
>>> c=C()
>>> C.a
3
>>> c.a
4
我怎么可以参考C.a
在C.f
的定义是什么?
目前
self.a = 4
将创建c.a
这是从C.a
不同。如果
self.a = 4
替换a = 4
,a
将在C.f
一个局部变量,而不是C.a
nonlocal a
不作a
在f
指C.a
,我不知道为什么?
谢谢。
更新:
在类的定义,我什么时候有资格的属性,我当不得?举例来说,我不明白为什么以下是错误的:
>>> class C:
... C.b=4
...
>>> C.b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'C' has no attribute 'b'
>>> C.C.b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'C' has no attribute 'C'
简单。使用'C.a = 4'。 –
根据您的更新:这是相当深奥的。当你说“C.b = 4”时,“C”还不存在。您没有收到错误,因为您在执行此代码之前已经定义了不同的“C”类。输入“del C”然后再试一次,你会得到一个错误。您正在更新旧的“C”类的类变量,然后使用新的C类重新定义它。 – RobertB