クラススコープを使用して子クラスを初期化する方法は? 親抽象クラスのスコープを子クラスに渡す方法は?
このコードを書くことはできますが、getChild を呼び出すたびに 1 つのクラスを作成しますが、次のことは避けたいと思います。
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'
建設的ではないものを除いて、どんな助けやヒントも大歓迎です。