如何解决python中有没有AbstractSubClass这样的东西? 背景问题
背景
在 python 中,如果你定义了一个需要覆盖其方法的抽象基类,你会这样做:
from abc import ABC,abstractmethod
class MyAbstractClass(ABC):
@abstractmethod
def my_method(self):
pass
以下代码将失败,因为它没有实现 my_method
。
class MyConcreteClass(MyAbstractClass):
pass
class MyMixin:
def my_mixin_method(self):
self.a_required_method()
以下代码有效:
class MyBase:
def a_required_method(self):
pass
class MyFull(MyMixin,MyBase):
pass
以下代码也有效...
class MydubIoUs(MyMixin):
pass
MyFull().my_mixin_method() # Works
MydubIoUs().my_mixin_method() # Runtime error
问题
有没有像 AbstractBaseClass
这样的东西可以添加到 Mixin 类中,以确保派生类不能被实例化,除非它正确继承?
我认为一个不错的 API 应该是这样的:
from asc import ASC,requiredmethod
class MyRobustMixin(ASC):
@requiredmethod
def a_required_method(self):
pass
def my_mixin_method(self):
self.a_required_method()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。