我目前正在研究一个简单的回合制游戏的框架。我试图在一个类中调用一个定义在一个单独的文件中。我从中导入moveset文件的程序叫做Pymon_Movesets。我将它导入Pymon_Main文件。两者的代码看起来有点像......
(的 Pymon_Moveset )
class normaltype():
def scratch():
type = normal
slot = 1
# Base normal type move
damage = 2 * level/2
Pymon_Main
From Pymon_Movesets import *
def Initialize():
Scratch = Pymon_Movesets.normaltype.scratch()
Bite = Pymon_Movesets.normaltype.bite()
我的错误
File "C:\Users\samsc\Desktop\Pymon\Pymon_main.py", line 2, in <module>
from Pymon_Movesets import * File "C:\Users\samsc\Desktop\Pymon\Pymon_Movesets.py", line 3, in <module>
import Pymon_main File "C:\Users\samsc\Desktop\Pymon\Pymon_main.py", line 110, in <module>
gamefunction.Initialize() File "C:\Users\samsc\Desktop\Pymon\Pymon_main.py", line 26, in Initialize
Scratch = Pymon_Movesets.normaltype.scratch() AttributeError: module 'Pymon_Movesets' has no attribute 'normaltype' The program
'[4908] python.exe' has exited with code -1073741510 (0xc000013a).
我正在使用Visual Studios Python编辑器。
感谢您的时间
答案 0 :(得分:0)
您正在将Pymon_Moveset.py
的所有内容导入当前命名空间,但是,您仍然使用文件名调用该类。此外,您需要在调用方法之前创建类的实例。最后,您需要在方法签名中包含self
,因此它绑定到类:
在Pymon_Movesets中:
class normaltype():
def scratch(self):
type = normal
slot = 1
# Base normal type move
damage = 2 * level/2
在主文件中:
import Pymon_Movesets
def Initialize():
Scratch = Pymon_Movesets.normaltype().scratch()
Bite = Pymon_Movesets.normaltype().bite()
但是,如果要使用类的名称而不是实例来访问类中的方法,请使用staticmethod
:
在Pymon_Moveset.py
:
class normaltype():
@staticmethod
def scratch():
type = normal
slot = 1
# Base normal type move
damage = 2 * level/2
答案 1 :(得分:0)
由于您正在执行from Pymon_Movesets import *
,因此如果它是模块级/文件级函数,则无需使用Pymon_Movesets
来调用其normaltype
函数。
from Pymon_Movesets import *
def Initialize():
Scratch = normaltype.scratch()
Bite = normaltype.bite()