【问题标题】:Python my Class throws TypeErrorPython我的类抛出TypeError
【发布时间】:2014-02-17 19:57:56
【问题描述】:

这是我的代码。

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(" touch ./crazy8") (在 Mac/linux 上),在我了解如何在 Windows 上创建文件后,我将添加它。

【问题讨论】:

    标签: python class python-3.x random


    【解决方案1】:

    您需要创建类的实例或对象(相同的东西)。
    x = crazy8()
    x.fortuner(r,"./crazy8")

    通常的做法是让您的类以大写字母开头,实例以小写字母开头。
    class Crazy8
    crazy8 = Crazy8()

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      要么你应该创建一个类的实例并调用它的方法,要么你应该使这个方法成为静态的。

      请参考:

      Static methods in Python

      【讨论】:

        猜你喜欢
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        • 2016-11-18
        • 1970-01-01
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        相关资源
        最近更新 更多