【发布时间】:2019-07-20 22:57:30
【问题描述】:
在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
这是一种设计模式,你每天都能看到,还是只是一种不好的做法?
【问题讨论】:
标签: python design-patterns multiple-inheritance