使用Ursina模块时触发TypeError: function() argument 'code' must be code, not str错误的求助
Ursina模块时触发TypeError: function() argument 'code' must be code, not str错误的求助
我最近在尝试使用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'参数,根本不知道这个错误在说什么,有没有人能帮忙解释一下这个错误,并且告诉我怎么修复它?
嗨,这个问题其实是因为你误解了Ursina的正确使用方式哦!Ursina并不是一个用来继承的类,它本质上是一个函数,作用是初始化整个游戏应用,而不是作为父类供你继承。
你现在把它当成类来继承的写法,就触发了这个奇怪的错误——因为函数没法被当作父类使用,内部逻辑错误地把你的类定义当成了字符串参数处理,所以才会抛出"code must be code, not str"的提示。
修复方法很简单,不用继承Ursina,直接调用它来初始化应用就好,之后再编写你的游戏逻辑。比如可以改成这样:
from ursina import * # 直接调用Ursina函数初始化游戏应用 app = Ursina() # 这里可以添加你的游戏逻辑,比如创建实体、设置场景等 cube = Entity(model='cube', color=color.blue) # 启动游戏循环 app.run()
如果你想把游戏逻辑封装成类,也可以自定义一个普通类,在Ursina初始化完成后再实例化这个类,示例如下:
from ursina import * class Game: def __init__(self): self.cube = Entity(model='cube', color=color.red) # 初始化应用 app = Ursina() # 实例化自定义游戏类 game = Game() # 启动游戏 app.run()
核心要点就是记住:Ursina是用来调用的初始化函数,不是用来继承的类,这样就能避开这个错误啦!
备注:内容来源于stack exchange,提问作者Quang Thanh
相关产品推荐
相关产品推荐

