私はいくつかのコードをオンラインで読んでおり、次のクラス定義に出くわしました。私はちょっと混乱しています。__init__メソッドがないときに、このコードがコンストラクタにパラメータを渡すのはなぜですか?
class MyClass(OrderedDict):
def __hash__(self):
return hash(tuple(self.iteritems()))
その他のコードには次の行があります。
MyClass(my_OD)
ここで、my_OD
は順序付き辞書です。私の質問は、__init__
メソッドがない場合、どのようにこのクラスに引数を渡すことができますか?この変数はクラス内でどこに割り当てられていますか?私はJavaから来ており、Javaでは、コンストラクタなしでクラスに引数を渡すことができないので、この動作は私にとっては外国のものです。 OrderedDict
から
これは、なぜあなたが 'self'(MyClassオブジェクト)でiteritems()を呼び出せるのかを説明します。 – BlaqICE
はい、 'iteritems'は' dict'オブジェクトのメソッドであり、OrderedDictは 'dict'を継承しますので、' MyClass.iteritems'は実際に 'dict.iteritems'を呼び出します。 – aneroid