在Python中使用静态方法获取调用类

时间:2013-11-22 16:26:46

标签: python static-methods

如果你有这样的设置:

class Animal(object):

    @staticmethod
    def create():
        return Animal()

class Frog(Animal):
    pass

您可以创建Animal.create()之类的动物,但如果您Frog.create(),则还会获得Animal而不是Frog。有没有办法更改create()方法,使其创建一个被调用的类的实例?

1 个答案:

答案 0 :(得分:3)

这是classmethod的典型用例:

class Animal(object):

    @classmethod
    def create(cls):
        return cls()

class Frog(Animal):
    pass

>>> Animal.create()
<Animal object at 0x51fc190>
>>> Frog.create()
<Frog object at 0x51fc610>