从原始文件外的类导入函数

时间:2013-06-16 21:24:24

标签: python class function object

我正在开发基于文本的冒险游戏。我想要做的事情之一是使用类构建游戏,将主数据类放在单独的文件中,然后在单独的文件中使用调用所有类和函数的实际主循环。这是我到目前为止调用主类文件

的主循环
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,它是包含类的文件的名称。该文件位于我的主游戏文件所在的位置。我怀疑它可能与构造函数有关,但我不确定。如果你们能帮助我,我会非常感激。

顺便说一句,这不是试图让你们回答我的问题的一种策略:)我只是想说这个网站和编程向导在这里,已经多次保存了我的屁股。非常感谢大家参与这个社区项目。

3 个答案:

答案 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参数,因此它是一种实例方法。它需要一个类的实例才能被调用。现在有两种方法可以解决这个问题:

  1. 创建一个类的实例:

    playerPrefs().createNew()
    
  2. 将方法设为静态方法:

    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)
    
  3. 鉴于你的结构,这些似乎都不合适,因为整个课程从我能说的话看起来有点无用。