在Python3中,我想编写一个只能用作mixin的类。有没有办法阻止它的直接产生?你知道吗
下面是一个简单的具体例子:
class EqMixin:
def __eq__(self, other):
return type(self) == type(other) and self.__dict__ == other.__dict__
def __hash__(self):
return hash(tuple(sorted(self.__dict__.items())))
但是,我想允许
class Bar(EqMixin):
...
不允许
foo = EqMixin()
怎么做?你知道吗
注意:我不能在EqMixin的__init__
中引发异常,因为__init__
可能由Bar的__init__
调用。你知道吗
注意:我不想要抽象基类(或者至少,我不想在mixin中放入任何抽象方法)。你知道吗
也许这样可以:
用法:
听起来你想创建一个abstract base class。也许使用^{} 模块?只要类上至少有一个抽象方法没有被重写,就不能实例化该类。你知道吗
相关问题 更多 >
编程相关推荐