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

Ind*_*pta 2 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()
Run Code Online (Sandbox Code Playgroud)

这给了我输出:

SEND
CHAT
Run Code Online (Sandbox Code Playgroud)

我想要它打印:

SEND
SEND
Run Code Online (Sandbox Code Playgroud)

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

jam*_*lak 5

该实例作为第一个参数传递给每个方法,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()
Run Code Online (Sandbox Code Playgroud)
SEND
SEND
Run Code Online (Sandbox Code Playgroud)