我想从一个类方法中调用一个变量到同一个类中的另一个方法:
class A():
@classmethod
def b(cls):
cls.g = 5
def c(self):
if self.g < 1:
print("TestA")
else:
print("TestB")
这样做时:
x = A()
x.c()
我得到:
AttributeError: 'A' object has no attribute 'g'
我已经阅读并搜索了类似的案件,但没有找到。大多数处理从init方法调用变量,但这不适用于此处。
答案 0 :(得分:6)
如果您事先没有运行.b()
,那么您的.g
根本就不存在。
向您的类添加__init__
函数,并在其中声明.g
,以确保至少存在该函数。
答案 1 :(得分:3)
您没有将g
定义为类A
的类属性。这可以通过以下方式完成:
class A():
g = 7
,但是在您的代码中,您同时将g
视为实例(self.g
)和类变量(cls.g
)。尽管此方法有效(self.g
将指cls.g
),但可能会造成混淆。