我如何参考课程'是否参与了该类方法的定义?
例如:
>>> 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'
答案 0 :(得分:1)
您需要使用该类本身:
C.a = 4
或可能
self.__class__.a = 4