Python Использовать приватные методы внутри mixin - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть этот устаревший код: (псевдо)
Я хочу вызвать метод 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...