2

次のコード セグメントがあります。

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 を変更するときにself.state = 'CHAT'、A のインスタンスに既に存在する の値を変更したいのです。これどうやってするの?

4

3 に答える 3

4

インスタンスは、各メソッドの最初の引数として渡され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
于 2013-04-26T10:25:00.553 に答える
0
ob_B = B()
ob_A = A()
ob_B.method2()
ob_A.printer()

ob_B.method2() を呼び出す必要があります -- ステートメントが関数への単なる参照であり、実際には呼び出しません。

于 2013-04-26T10:25:07.293 に答える