Python 从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

我想将一个变量从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 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