Python 在静态函数内添加类属性和在类外赋值之间的区别
代码如下:Python 在静态函数内添加类属性和在类外赋值之间的区别,python,Python,代码如下: class A: @staticmethod def g(): A.__z = 4 print(dir(A)) A.g() print(dir(A)) # A has attribute _A__z A.__m = 5 print(dir(A)) # A has attribute _A__z and __m 为什么名称\uuu m没有被损坏成\u A\uu m,而\uu z是?正是因为您在类外声明了它,而名称损坏发生在类内。正如 只要标识符出现在类的定义中,
class A:
@staticmethod
def g():
A.__z = 4
print(dir(A))
A.g()
print(dir(A)) # A has attribute _A__z
A.__m = 5
print(dir(A)) # A has attribute _A__z and __m
为什么名称
\uuu m
没有被损坏成\u A\uu m
,而\uu z
是?正是因为您在类外声明了它,而名称损坏发生在类内。正如
只要标识符出现在类的定义中,就可以在不考虑标识符的语法位置的情况下进行修改
在编译时,在类
语句内部的代码会发生名称损坏。对于类
语句之外的代码,不会出现这种情况。对于在类
语句外部定义然后添加到类对象的函数中的代码,不会出现这种情况。由exec
或eval
调用在class
语句中动态执行的代码不会出现这种情况