Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未绑定方法错误-基于文本的冒险_Python_Class_Methods - Fatal编程技术网

Python 未绑定方法错误-基于文本的冒险

Python 未绑定方法错误-基于文本的冒险,python,class,methods,Python,Class,Methods,我正在用python创建一个基于文本的冒险。我准备了两本关于python的书,还参加了一门在线课程,所以我想我已经把所有的基础知识都记下来了 现在我正在创建我的项目。我的设置是 物品->武器->(此处为特定武器) 所有类都继承上一个类 我无法打印圣剑和棍棒等物品的值。如果我不将它们创建为类,而只是使用一个变量来创建武器实例,我就可以打印它们。然而,由于我想做的事情更进一步,我真的希望它们是类 我得到的错误是: 必须使用Holy_Swarme实例作为第一个参数调用unbound方法str()(没有

我正在用python创建一个基于文本的冒险。我准备了两本关于python的书,还参加了一门在线课程,所以我想我已经把所有的基础知识都记下来了

现在我正在创建我的项目。我的设置是

物品->武器->(此处为特定武器)

所有类都继承上一个类

我无法打印圣剑和棍棒等物品的值。如果我不将它们创建为类,而只是使用一个变量来创建武器实例,我就可以打印它们。然而,由于我想做的事情更进一步,我真的希望它们是类

我得到的错误是:

必须使用Holy_Swarme实例作为第一个参数调用unbound方法str()(没有得到任何结果)

我的代码是:

class Item(object):
    def __init__(self, name, value, description):
        self.name = name
        self.value = value
        self.description = description
    def item_description(self):
        return "Your %s is worth %d gold and is a %s" % (self.name, self.value, self.description)

class Weapon(Item):
    def __init__(self,name, value,description,  attack):
        self.attack = attack
        super(Weapon, self).__init__(name, value, description)
    def __str__(self):
        return "Your %s is worth %d gold and has an Attack Damage of %d, it is %s" % (self.name, self.value, self.attack, self.description)

class Stick(Weapon):
    def __init__(self, name, value, description, attack):
        super(Stick, self).__init__(name = "Stick", value= 1, description = "A stick...there may be potential here....or not.", attack = 1)

class Holy_Sword(Weapon):
    def __init__(self, name, value, description, attack):
        super(Holy_Sword, self).__init__(name = "The Holy Sword of Antioch", value= 20, description = "A Sword whose potential far outweighs it's lack of stylishness ", attack = 20)

class Sword(Weapon):
    def __init__(self, name, value, description, attack):
        super(Sword, self).__init__(name = "Sword", value= 3, description = "A Wooden Sword.", attack = 5)


print Holy_Sword.__str__()

您需要首先实例化该类:

my_sword = Holy_sword(...) 
print my_sword.__str__() 

请记住,在这里的代码中,
Holy_Swarm
指的是一个类。它本身不是
项的实例

神圣之剑。\uuuuu str\uuuu
是一种实例方法。它不能像你在这里试图做的那样被单独调用;它必须通过
神圣之剑
类的实例调用

(请注意,通常最好不要直接调用
\uu str\uu
。此方法通常只能通过
str()
函数调用,例如
str(神圣之剑)

您可以做的是创建一个
神圣之剑
的实例,并打印该实例的字符串值:

sword = Holy_Sword()
print str(sword)
<>但是,你可能想考虑让<代码> HoyyLoox是具有特定属性的<代码>武器< /代码>的实例,而不是子类。如果它需要区别于其他武器的唯一方式是它的属性,那么它就没有必要是一个单独的类