如何使用类范围初始化子类?如何将父抽象类范围传递给子类?
我可以编写这段代码,但每次调用 getChild 我都会创建一个类,但要避免:
class Parent(object): # abstract class!
@staticmethod
def getParentName():
raise NotImplementedError()
@classmethod
def getChild(cls): # solid class
class Child(object):
@staticmethod
def getChildName():
return 'Child of ' + cls.getParentName()
return Child
class SomeParent(Parent):
@staticmethod
def getParentName():
return 'Solid Parent'
print SomeParent.getChild().getChildName() # == 'Child of Solid Parent'
如何将上面的代码转换为在父范围内定义子类(考虑到父类是抽象的,所以我们不能使用 Parent2.getParentName() 因为它会被覆盖?
class Parent2(object): # abstract class!
@staticmethod
def getParentName()
raise NotImplementedError()
class Child2(object): # solid class
# what code here to do the same like Child???
pass
class SomeParent2(Parent): # final class
@staticmethod
def getParentName()
return 'Solid Parent2'
SomeParent2.getChildClass().getChildName() # == 'Child of Solid Parent2'
除了没有建设性的内容外,任何帮助或提示都将受到欢迎。