从类方法函数调用变量到普通方法

时间:2019-04-10 11:34:42

标签: python class

我想从一个类方法中调用一个变量到同一个类中的另一个方法:

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方法调用变量,但这不适用于此处。

2 个答案:

答案 0 :(得分:6)

如果您事先没有运行.b(),那么您的.g根本就不存在。

向您的类添加__init__函数,并在其中声明.g,以确保至少存在该函数。

答案 1 :(得分:3)

您没有将g定义为类A的类属性。这可以通过以下方式完成:

class A():
    g = 7

,但是在您的代码中,您同时将g视为实例(self.g)和类变量(cls.g)。尽管此方法有效(self.g将指cls.g),但可能会造成混淆。