如果你有这样的设置:
class Animal(object):
@staticmethod
def create():
return Animal()
class Frog(Animal):
pass
您可以创建Animal.create()
之类的动物,但如果您Frog.create()
,则还会获得Animal
而不是Frog
。有没有办法更改create()
方法,使其创建一个被调用的类的实例?
答案 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>