程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了python中的抽象类+ mixin +多重继承大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决python中的抽象类+ mixin +多重继承?

开发过程中遇到python中的抽象类+ mixin +多重继承的问题如何解决?下面主要结合日常开发的经验,给出你关于python中的抽象类+ mixin +多重继承的解决方法建议,希望对你解决python中的抽象类+ mixin +多重继承有所启发或帮助;

继承不是应该相反吗?foo目前在MRO之前bar_for_foo_mixin,然后理所当然地抱怨。用class myfoo(bar_for_foo_mixin, foo)它应该工作。

而且我不确定您的班级设计是否是正确的方法。由于您使用mixin来实现,bar因此最好不要从foo派生而只向’foo’类注册(即foo.register(myfoo))。但这只是我的直觉。

为了完整起见,这里是ABC的文档。

解决方法

因此,我认为代码可能用语言解释了我想做得更好的事情,因此,这里是:

import abc

class foo(object):
    __metaclass__ = abc.ABCMeta
    @abc.abstractmethod
    def bar(self):
        pass


class bar_for_foo_mixin(object):
    def bar(self):
        print "This should satisfy the abstract method requirement"


class myfoo(foo,bar_for_foo_mixin):
    def __init__(self):
        print "myfoo __init__ called"
        self.bar()

obj = myfoo()

结果:

TypeError: Can't instantiate abstract class myfoo with abstract methods bar

我正在尝试使mixin类满足abstract / interface类的要求。我想念什么?

大佬总结

以上是大佬教程为你收集整理的python中的抽象类+ mixin +多重继承全部内容,希望文章能够帮你解决python中的抽象类+ mixin +多重继承所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。