Python我的类抛出TypeError

时间:2014-02-17 19:57:56

标签: python class python-3.x random

这是我的代码。

import fileinput, random
from os import system as sys
from sys import exit
class crazy8(object):
    question = raw_input("please enter a yes or no question \n")
    def fortune(self, filex, current):
        current = r"./"
        fortunes = list(fileinput.input(filex))
        sys("cd", current)
        print random.choice(fortunes)
crazy8.fortune(r"./crazy8")
exit(0)

当我运行程序时,我输入一个问题(我知道程序不关心输入的内容)。我觉得我上课时做错了。我知道当没有class:语句时它工作正常,但我需要那里的类(在我完成之后,我将把它用作模块)。

在问题之后,我得到了

TypeError: unbound method fortune() must be called with crazy8 instance as first argument (got str instance instead)

(我还没有添加任何错误检查。如果文件./crazy8不存在,我会尝试添加try和catch / raise。此外,我稍后会添加一个自动sys的文件(“触摸./crazy8“)(在Mac / linux上),在我找到如何在Windows上创建文件之后,我将添加它。

2 个答案:

答案 0 :(得分:1)

你需要创建类的实例或对象(同样的事情) x = crazy8()
x.fortuner(r,"./crazy8")

通常的做法是让您的课程以大写字母和小写字母开头。
class Crazy8
crazy8 = Crazy8()

希望这有帮助

答案 1 :(得分:0)

您应该创建类的实例并调用其方法,或者您应该使该方法保持静态。

请参阅:

Static methods in Python