lsc123987 2013-07-05 12:40 采纳率: 0%
浏览 1521

python 类在实现了mongoengine后不能被继承是怎么回事?

[20:06:55][5648][INFO ][utils.py:20][]: ============== log initialized ==============
Traceback (most recent call last):
File "D:\ztcjingling\ztcjl3-20120903\apps\kwlib\test.py", line 10, in
from kwlib.task_manage import Task_Manager
File "D:\ztcjingling\ztcjl3-20120903\apps\kwlib\task_manage.py", line 461, in
class Claw_Task(Task_Manager):
File "C:\Python27\lib\site-packages\mongoengine-0.8.1-py2.7.egg\mongoengine\base\metaclasses.py", line 331, in new
new_class = super_new(cls, name, bases, attrs)
File "C:\Python27\lib\site-packages\mongoengine-0.8.1-py2.7.egg\mongoengine\base\metaclasses.py", line 119, in new
base.__name__)
ValueError: Document Task_Manager may not be subclassed

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-04 14:49
    关注

    这是因为在使用 mongoengine 时,定义的每个类都是一个 MongoDB 文档,并且在 mongoengine 中有一个限制,就是文档不能被继承。因此,当你尝试继承一个在 mongoengine 中定义的类时,会出现这种错误。


    如果你想让一个类继承另一个类,而这个类已经在 mongoengine 中被定义为文档,则可以使用 Python 的内置关键字 super 来调用父类的方法,而无需继承父类。你可以使用下面的代码来实现这一点:

    class Claw_Task:
        def __init__(self):
            super(Claw_Task, self).__init__()
            # your code here
    

    这样,你就可以在 Claw_Task 类中使用 Task_Manager 类的方法,而无需继承 Task_Manager 类。

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献