函数() 参数 'code' 必须是代码,而不是字符串

1 投票
1 回答
99 浏览
提问于 2025-04-14 17:07

我正在尝试使用ursina模块,刚刚输入了这段代码:

from ursina import *

class Game(Ursina):
    def __init__(self):
        pass

结果出现了这个错误:

>>> from ursina import *
>>> class Game(Ursina):
>>> ...     def __init__(self):
>>> ...
Traceback (most recent call last):
File "<test>", line 3, in <module>
class Game(Ursina):
TypeError: function() argument 'code' must be code, not str

我没有code这个参数,所以我不知道这个错误指的是什么。

有人能解释一下并帮我解决这个错误吗?

1 个回答

5

请查看Ursina的第579个问题

这是Ursina这个包的一个限制,它不允许你去扩展(也就是创建子类)Ursina这个类。

Ursina类的定义是:

@singleton
class Ursina(ShowBase):
    ...

singleton是:

def singleton(cls, **kwargs):
    def getinstance(**kwargs):
        if not hasattr(cls, '_instance') or not cls._instance:
            cls._instance = cls(**kwargs)
        return cls._instance

    return getinstance

这意味着被装饰的Ursina实际上是由singleton返回的一个函数,而不是一个类,因此你不能去扩展它。

撰写回答