В библиотеке facebook-python-business-sdk я видел кое-что, что я считаю плохой практикой:
AdAccountUserMixin get_pages () использует метод self.iterate_edge (), который не является ни методом этого класса, ни родительским.
AbstractCrudObject реализует этот метод.
И затем AdAccountUser наследуется от этих двух классов.Вот почему объект AdAccountUser может использовать метод get_pages ().
Минимальный пример:
class AbstractBar:
def bar(self, x):
return x
class Foo:
def foo(self, x):
return self.bar(x)
class Test(Foo, AbstractBar):
def test(self, x):
return self.foo(x)
t = Test()
t.test(5) # returns 5
Это шаблон проектирования, который вы видите каждый день, или просто плохая практика?