我正在开发基于文本的冒险游戏。我想要做的事情之一是使用类构建游戏,将主数据类放在单独的文件中,然后在单独的文件中使用调用所有类和函数的实际主循环。这是我到目前为止调用主类文件
的主循环import time
import sys
import pickle
import className
playerPrefs.createNew()
以下是运行程序时受影响的主类文件中代码的一部分。
class playerPrefs(object):
# This line will create a function to create a new player name
def createNew(self):
print "Welcome to Flight of Doom Character Creation Screen."
time.sleep(2)
print "Please type your first and last Name, spaced in between, at the prompt"
time.sleep(2)
当我尝试从主游戏文件中运行createNew函数时出现问题。如您所见,我导入className,它是包含类的文件的名称。该文件位于我的主游戏文件所在的位置。我怀疑它可能与构造函数有关,但我不确定。如果你们能帮助我,我会非常感激。
顺便说一句,这不是试图让你们回答我的问题的一种策略:)我只是想说这个网站和编程向导在这里,已经多次保存了我的屁股。非常感谢大家参与这个社区项目。答案 0 :(得分:1)
您已将playerPrefs()
定义为实例方法,而不是类方法(因为它有self
作为其第一个参数)。因此,您需要在调用之前创建一个实例,例如:
p = playerPrefs()
p.createNew()
此外,您编写的代码根本不应该运行,因为您没有缩进createNew()
的定义,而且您需要。
正如Vedran所说,要么使用:
p = className.playerPrefs()
使其有效,或按照他的建议从playerPrefs
导入className
。
答案 1 :(得分:0)
尝试
from className import *
或
from className import playerPrefs
答案 2 :(得分:0)
由于您的createNew
方法采用self
参数,因此它是一种实例方法。它需要一个类的实例才能被调用。现在有两种方法可以解决这个问题:
创建一个类的实例:
playerPrefs().createNew()
将方法设为静态方法:
class playerPrefs(object):
@staticmethod
def createNew():
print "Welcome to Flight of Doom Character Creation Screen."
time.sleep(2)
print "Please type your first and last Name, spaced in between, at the prompt"
time.sleep(2)
鉴于你的结构,这些似乎都不合适,因为整个课程从我能说的话看起来有点无用。