我有一个类,它的__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