У меня есть этот устаревший код: (псевдо)
Я хочу вызвать метод Mixin для вызова do
.но для поведения используйте внутри самого class
, для родительского UpdateClass
, для дочернего DefaultChildClass
.
Я пытаюсь использовать закрытый метод __my_property
, но он не работает для FirstParent
класса.
Что я могу сделать в этой ситуации?
class Mixin:
my_property = {}
def do(self, action):
try:
return self.my_property.get(action)()
except:
return self.default()
class DefaultClass:
def foo(self):
print('foo')
class UpdateClass:
def foo(self):
print('PARENT update')
class DefaultChildClass:
def foo(self):
print('CHILD foo')
class FirstParent(Mixin):
default = DefaultClass
my_property = {
'update': UpdateClass
}
class SecondChild(FirstParent):
default = DefaultChildClass
p = FirstParent()
method = p.do('update')
method.foo()
cl = SecondChild()
method = cl.do('update')
method.foo()
Если использовать hasattr(self.__class__, 'my_property')
, это не поможет, для возвращения ребенка True