【问题标题】:How to add an object to a list created within a class如何将对象添加到类中创建的列表中
【发布时间】:2020-04-24 22:43:09
【问题描述】:

我正在学习课程。我创建了一个 Item 类,它定义了一个项目的统计信息,例如一把剑。我还创建了一个带有物品清单的 Player 类。我在 Item 类中添加了一个 super_sword,现在我想将 super_sword 添加到 Player 库存中。我收到以下错误:

        line 16, in add_item
    item.append(inventory)
AttributeError: 'Item' object has no attribute 'append'

我的代码:

class Item:
    def item_stats():
        base_dmg = 0
        magic_dmg = 0

#--- Create an item super_sword and assign damage attributes ---#
super_sword = Item() 
super_sword.base_dmg = 10
super_sword.magic_dmg = 12

class Player:

    inventory = []

    def add_item(self, item):
        item.append(inventory)

#--- Create some_character and add super_sword to its inventory ---#
some_character = Player()
some_character.add_item(super_sword)

【问题讨论】:

  • 请在append返回您的教学资料以了解用法。

标签: python python-3.x class


【解决方案1】:

错误在这里:

item.append(inventory)

您正在尝试将库存附加到列表项。它需要被交换:

inventory.append(item)

【讨论】:

  • 谢谢你,我的大脑需要,更多的咖啡,我不知道为什么我尝试在项目中附加库存......现在它返回 NameError: name 'inventory' is not defined。我认为如果我在类中定义库存,它将可用于 add_item 函数。
  • 没问题!很高兴我能回答。
  • 您是否知道如何定义库存以便可以从 add_item 函数调用?现在它告诉我库存没有定义,即使它是在类中定义的
  • 您可能想要添加一个 __init__ 函数,您可以在其中声明 self.inventory = [] 以便在整个类中都可以调用它
  • 再次感谢您!
【解决方案2】:

@holden 已部分回答了您的问题,但必须:

self.inventory.append(item)

您现在声明它的方式 inventory 是一个类变量,因此将由 Player 类的所有实例共享,这可能不是您想要的。

假设每个 Player 实例都有自己的清单,则需要在 Player 类的 __init__() 方法中定义它。像这样:

class Player:
    def __init__(self):
        self.inventory = []

在 init 方法中,您还可以包含您的 Player 实例可能需要的任何其他初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2023-04-10
    • 2013-02-05
    • 2021-06-11
    相关资源
    最近更新 更多