0

__init__()関数を明示的に呼び出すことは可能ですか? または、クラスのオブジェクトがインスタンス化されると、関数は常に呼び出されますか?

4

3 に答える 3

0

Python は非常に寛大な言語であり、実行してはいけないことを実行できることも意味します。したがって、__init__()はメソッドですが (つまり、他のメソッドと同様に直接呼び出すことができます)、結果はクラスごとに異なります。一部のクラスは ですべての状態を初期化した__init__()ため、再度呼び出すとクラスが効果的にリセットされます。他のクラスの動作は異なり、クラスが常に何らかの方法で動作するという保証はありません。

通常、この質問は、2 段階の初期化が必要な場合に出てきます (つまり、クラスを作成し、セットアップを行ってから実際に初期化します)。そのための新しいinit()メソッドを作成します。

a = A()
a.setFoo(foo)
a.init()

同様に、クラスがリセットをサポートしている場合は、reset()メソッドを追加します。

于 2013-09-02T15:41:15.347 に答える