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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog