私にはクラスがあり、その__init__
関数はたくさんのことを行います。必要なのはそれだけです。
__init__
だから私は本当にこのクラスの関数を呼び出したいだけです。変数に割り当てずにこれを行うにはどうすればよいですか?
私にはクラスがあり、その__init__
関数はたくさんのことを行います。必要なのはそれだけです。
__init__
だから私は本当にこのクラスの関数を呼び出したいだけです。変数に割り当てずにこれを行うにはどうすればよいですか?
クラスが呼び出されたとするとFoo
、次のことができます。
Foo()
ただし、これを行う必要がある場合は、設計を再考する必要があることを示している可能性があります。
まず第一に、これは明らかに設計エラーです-そのコードはスタンドアロン関数でなければなりません。
ただし、これを行うにはいくつかの方法があります。
通常どおりインスタンス化するだけです。式の結果を変数に割り当てる必要はありません。ただし、これにより完全なオブジェクトが構築されます(そしておそらくその後すぐに破壊されます)。
Foo()
基になる関数を呼び出します。
Foo.__dict__.get('__init__')(None)
これはオブジェクトの構築をトリガーしませんが、おそらくそれは望ましくありません。None
この例では、の値として渡したことに注意してくださいself
。これは、__init__
何もしない場合にのみ機能しself
ます(または、そうである場合を処理しますNone
)。
2a。staticmethodを使用して、これを簡単にすることができます。
In [32]: class Foo(object):
....: @staticmethod
....: def __init__():
....: print "Foo init"
....:
In [33]: Foo()
Foo init
Out[33]: <django.core.management.commands.shell.Foo at 0x46d49b0>
In [34]: Foo.__init__()
Foo init