静态方法返回其类的实例

时间:2013-11-05 15:07:31

标签: python static-methods

类的静态方法是否可以返回其类的新实例。

class Foo(object):
    @staticmethod
    def return_new():
        "returns a new instance of the class"
        new_instance = ???
        return new_instance

我想要它所以Foo的任何子类都将返回子类而不是Foo实例。所以取代???与Foo()不会。

1 个答案:

答案 0 :(得分:8)

为什么不使用classmethod?使用classmethod,该方法接收类作为第一个参数(以下示例中为cls)。

class Foo(object):
    @classmethod
    def return_new(cls):
        "returns a new instance of the class"
        new_instance = cls()
        return new_instance

class Bar(Foo):
    pass

assert isinstance(Foo.return_new(), Foo)
assert isinstance(Bar.return_new(), Bar)