0

非常に単純な Python クラスを作成しようとしていますが、コンストラクターでの「self」の使用に混乱しています。

次のコンストラクター コード スニペットでは、'r1' 'r2' 'server' のすべての前に 'self.' を付ける必要があります。ハンドラーメソッド「user_callback」についても同じですか?

class App:
    def __init__(self,ip,port):
        self._ip=ip
        self._port=port
        r1 = pf.Relay(0)
        r2 = pf.Relay(1)
        server = OSCServer( ( self._ip, self._port) )
        server.addMsgHandler( "/1/push1", user_callback )
4

1 に答える 1

1

Python のクラスのすべてのインスタンス メソッドには、そのインスタンスが最初のパラメーターとして暗黙的に渡されます。selfそのため、すべてのインスタンス メソッドの最初の引数として追加する必要があります。そうしないと、エラーが発生します。

とは言え、何をするかselfは完全にあなた次第です。そうself.x = 1することで、そのインスタンスだけに新しい変数をインスタンスに追加することになります。r1後で他のメソッドで使用するために変数を保存する場合はr2serverはい、それらをインスタンス変数として保存します。それ以外の場合は、プレフィックスを付ける必要はありませんself

Python のクラスは、そのインスタンス変数とメソッドを管理するための辞書のように動作します (実際には辞書があります)。を実行して、インスタンスにインスタンス変数を追加しますself.x = 1

お役に立てれば!

于 2013-11-05T15:59:15.220 に答える