调用嵌套在类中的方法

时间:2013-01-19 22:08:40

标签: python class python-2.7 typeerror

我正在使用基于GNU的操作系统(Precise Puppy 5.4)的所有程序

描述

  • 首先我创建一个类。
  • 在该类中我定义了一个方法
  • 此方法采用通常命名的参数
  • 我有一个if-elif-else语句,可以使用参数值
  • if语句确定要返回的字符串

在课程之外,我提示传递给变量userinput的用户输入。

然后我用userinput作为参数调用方法并将返回值分配给 变量名variable。 然后我打印variable

一些注释

首先,我知道还有其他方法可以达到同样的效果。原因 我不使用其中一个是因为我正在进行相当大的文本冒险并且需要 做出大量的决定并分配大量的变量。

如果我要对不同的部分进行分类,那么使用代码会容易得多 游戏(即:一个名为Player的类和名为statsinventorygold等的方法 类作为特定区域的类别和方法

我知道错误与以下事实有关:当我调用class.function时,该类没有返回值。但是这个方法没有在类中调用,所以没有办法从类内部的方法返回值,但是在方法之外。

class classname () :
    def methodname (value) :
        if value == 1 :
            return "Hello World"
        else :
            return "Goodbye World!"
userinput = raw_input("Enter the number [1]\n")
variable = classname.methodname (userinput)
print (variable)

控制台输出

Enter the number [1]        (this is the prompt)
1                           (this is the user input)

(now the error)

Traceback (most recent call last):
    File "filename.py", line 8, in <module>
        variable = (classname.methodname (userinput))
TypeError: unbound method methodname() must be called with
classname instance as first argument (got classobj instance
instead)

此问题已得到解决。问题是一个简单的语法问题。这是固定代码 解决方案和Lev Levitsky格式化这篇文章的道具最大化! ^。^

class classname () :
    def methodname (self, value) :
        if value == "1" :
            return "Hello World"
        else :
            return "Goodbye World!"
userinput = raw_input("Enter the number [1]\n")
variable = classname().methodname (userinput)
print (variable)

1 个答案:

答案 0 :(得分:3)

你快到了。只需在@staticmethod;)之前添加def methodname(value)

或者,如果您不打算使用静态方法,请尝试更改methodname的签名以接受一个附加参数self(def methodname (self, value) :),并确保始终从实例中调用methodnamevariable = (classname().methodname (userinput))