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 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug