如何从python中的另一个类访问类变量?

时间:2013-04-26 10:20:07

标签: python class class-variables

我有以下代码段:

class A:
    def __init__(self):
        self.state = 'CHAT'

    def method1(self):
        self.state = 'SEND'

    def printer(self):
        print self.state


class B(A):
    def method2(self):
        self.method1()
        print self.state

ob_B = B()
ob_A = A()
ob_B.method2()
ob_A.printer()

这给了我输出:

SEND
CHAT

我想要打印:

SEND
SEND

也就是说,当B.method2通过调用self.method1修改self.state时,我希望它修改A实例中已存在的self.state = 'CHAT'值。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

实例作为每个方法的第一个参数传递,因此self是实例。您正在设置实例属性而不是类变量。

class A:

    def __init__(self):
        A.state = 'CHAT'

    def method1(self):
        A.state = 'SEND'

    def printer(self):
        print A.state


class B(A):
    def method2(self):
        self.method1()
        print B.state

ob_B = B()
ob_A = A()
ob_B.method2()
ob_A.printer()

SEND
SEND

答案 1 :(得分:0)

ob_B = B()
ob_A = A()
ob_B.method2()
ob_A.printer()

你需要调用ob_B.method2() - 没有括号,该语句只是对函数的引用,实际上并没有调用它。

答案 2 :(得分:0)

您可以使用B的对象调用printer()方法,以便获得更新的值。

ob_B = B()
ob_A = A()
ob_B.method2()
ob_B.printer()