【发布时间】:2019-02-05 19:58:35
【问题描述】:
首先我是 python 新手,这是我的第一篇文章,如果我在这里做错了什么,请告诉我,我很乐意修复它。
我正在使用 Python 2.7.15rc1 和 Peewee 3.6.4
我想要实现的是创建一个继承自 peewee 模型以及 PySide.QtCore 的 QObject 的类。就像这样:
class BaseModel(Model, QObject):
id = PrimaryKeyField()
class Meta:
database = db
def __str__(self):
return str(self.__dict__)
def __eq__(self, other):
return self.id == other.id
但是这个配置给我带来了以下错误:
TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
如果我尝试将 Model 指定为所需的元类(我认为这没问题,因为基本上我只需要与 QObject 的“is a”关系为真),方法是将其添加到 BaseModel:
__metaclass__ = Model
抛出以下错误:
AttributeError: 'Model' object has no attribute '_meta'
另外,通过关注此link,我已将代码更改为:
class A (Model):
pass
class B (QObject):
pass
class C(A, B):
pass
class BaseModel(A, B):
__metaclass__ = C
id = PrimaryKeyField()
class Meta:
database = db
def __str__(self):
return str(self.__dict__)
def __eq__(self, other):
return self.id == other.id
但元类冲突仍然存在。
我在这里做错了什么?
【问题讨论】:
标签: python python-2.x multiple-inheritance peewee