所以我有一个超类(为了简单起见,我将其称为“哺乳动物”,Dog、Monkey和Bear类从中继承方法。一些继承的方法返回的对象需要与调用该对象的类相同。例如,Dog.find(...)
应该返回Dog对象。但是由于find()
方法是从哺乳动物那里继承的,所以该方法不能被显式地编码为return Dog(...)
。它需要能够返回狗、猴子、熊或哺乳动物对象,这取决于self.__class__.__name__
的值。在
我已经用return eval(self.__class__.__name__)(...)
实现了这一点,但我宁愿避免使用eval。有更好的方法吗?在
使用classmethod创建工厂:
只要试试
return self.__class__()
相关问题 更多 >
编程相关推荐