我正在用python创建一个基于文本的冒险。我准备了两本关于python的书,还参加了一个在线课程,所以我想我真的掌握了所有的基础知识
现在我正在创建我的项目。我的设置是
Item->Weapon->(specific weapon here).
所有类都继承上一个类
我无法打印圣剑和棍棒等物品的价值。如果我不将它们创建为类,而只是使用一个变量来创建武器的实例,我就可以打印它们。然而,由于我想做进一步的线,我真的希望他们是班
我得到的错误是:
unbound method str() must be called with Holy_Sword instance as first argument (got nothing instead)
我的代码是:
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__()
请记住,在这里的代码中,
Holy_Sword
引用一个类。它本身不是Item
的实例Holy_Sword.__str__
是一个实例方法。它不能像你在这里试图做的那样被单独调用;它必须通过Holy_Sword
类的实例调用(注意,通常最好不要直接调用
__str__
。此方法通常只能通过str()
函数调用,例如str(Holy_Sword)
)您可以创建一个
Holy_Sword
实例并打印该实例的字符串值:但是,您可能需要考虑将
Holy_Sword
作为具有特定属性的Weapon
的实例,而不是作为子类。如果它需要区别于其他武器的唯一方式是它的属性,那么它就没有必要成为一个单独的类首先需要实例化类:
相关问题 更多 >
编程相关推荐