我有以下代码段:
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'
值。我怎么能这样做?
答案 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()