Python 从classmethod函数调用变量到普通方法
我想将一个变量从classmethod调用到同一类中的另一个方法:Python 从classmethod函数调用变量到普通方法,python,class,Python,Class,我想将一个变量从classmethod调用到同一类中的另一个方法: class A(): @classmethod def b(cls): cls.g = 5 def c(self): if self.g < 1: print("TestA") else: print("TestB") 我得到: AttributeError: 'A' object has no att
class A():
@classmethod
def b(cls):
cls.g = 5
def c(self):
if self.g < 1:
print("TestA")
else:
print("TestB")
我得到:
AttributeError: 'A' object has no attribute 'g'
我已经阅读并搜索了一个类似的案例,但没有找到。大多数都是从init方法调用变量,这里不适用。如果您事先没有运行.b()
,则您的.g
根本不存在
在类中添加一个
\uuuuu init\uuuu
函数,并在其中声明.g
,以确保它至少存在。您没有将g
定义为类a
的类属性。可以这样做:
class A():
g = 7
但在代码中,您同时将
g
视为实例(self.g
)和类变量(cls.g
)。虽然这是可行的(self.g
将引用cls.g
),但它可能会让人困惑。或者只是在类中添加一个g=None
。g=None
只会将AttributeError
转换为Python 3中的TypeError
,因为您无法将None
与1
进行比较。事实上,但这将有助于识别和发现问题。我不确定为什么我在这个问题上得到-1…这可能发生了,因为你的问题非常基本。你收到的错误已经回答了你的问题。如果某个东西没有something
作为属性,则不会添加该something
。接下来的问题是找出为什么没有添加。它被遗忘了吗?是不是放错地方了?它是否取决于操作顺序,这是错误的…?注意:您调用函数,而不是变量。
class A():
g = 7