12

self私は最近、小さなPythonプロジェクトに取り組んでいて、別のオブジェクトのコンストラクターに渡したいという状況になりました。理由はわかりませんが、Pythonでこれが合法かどうかを調べる必要がありました。私はこれをC++とJavaで何度も実行しましたが、Pythonでこれを実行する必要があったことを覚えていません。

self新しいオブジェクトへの参照を渡すことは、 pythonicとは見なされないものですか?自己参照を明示的に渡すPythonプログラムを見たことがないと思います。今まで必要がなかったのでしょうか?それとも私はPythonスタイルと戦っていますか?

4

2 に答える 2

18

はい、それは合法であり、はい、それはpythonicです。

含まれているオブジェクトがその親について知る必要があるオブジェクトとコンテナオブジェクトがある場合、私はこのパターンを使用していることに気付きます。

于 2010-10-15T20:36:46.500 に答える
4

パラメータのように渡すだけです。もちろん、self他の初期化子では呼び出されません...

class A:
    def __init__(self, num, target):
        self.num = num
        self.target = target

class B:
    def __init__(self, num):
        self.a = A(num, self)

a = A(1)
b = B(2)
print b.a.num # prints 2
于 2010-10-15T20:39:49.797 に答える