AttributeError:“RangedWeapon”对象没有属性“owner”

2024-09-24 22:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

Person对象中,已经有了对清单的支持,当Person对象接受Weapon对象或Food对象时,该对象将转到清单。对于Tribute对象,我想通过在Tribute类中创建一个新方法来从清单中检索Weapon对象,该方法将返回Tribute当前在其清单中的Weapon对象的元组。在

class Tribute(Person):
   ...
      def get_weapons(self):
            self.weapons=[]
            for item in self.get_inventory():
                if isinstance(item,Weapon):
                    self.weapons.append(item)
            return tuple(self.weapons)

cc = Tribute("Chee Chin", 100)
chicken = Food("chicken", 5)
aloe_vera = Medicine("aloe vera", 2, 5)
bow = RangedWeapon("bow", 4, 10)
sword = Weapon("sword", 2, 5)

Base = Place("base")
Base.add_object(cc)
Base.add_object(chicken)
Base.add_object(aloe_vera)
Base.add_object(bow)
Base.add_object(sword)

cc.take(bow)                           # Chee Chin took bow
cc.take(sword)                         # Chee Chin took sword
cc.take(chicken)                       # Chee Chin took chicken
cc.take(aloe_vera)                     # Chee Chin took aloe_vera

但我一直得到AttributeError: 'RangedWeapon' object has no attribute 'owner'。我不知道出了什么问题。我真的很感激你的帮助。谢谢您!在

^{pr2}$

Tags: 对象selfaddbaseobjectccweaponvera
1条回答
网友
1楼 · 发布于 2024-09-24 22:29:47

不是python 3.x的专家,但是:

class Weapon(Thing):

def __init__(self, name, min_dmg, max_dmg):
    self.name=name
    self.min_dmg=min_dmg
    self.max_dmg=max_dmg

实际上,您从未将武器设置为从Thing继承-您需要调用适合于Thing的super().__init__行,在武器的ctor中。这是一个烦人的python怪癖。在

看看这里-看看RangedWeapon的ctor-你做得对:

^{pr2}$

相关问题 更多 >