播放器没有属性'广告资源'

时间:2017-10-27 16:44:52

标签: python python-3.x

我正在尝试制作一款游戏,我为这款游戏添加了一个类:

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

现在,当我尝试以任何方式致电Player.inventory时,它会给我一个错误说:

  

玩家没有属性'库存'

我不确定我做错了什么,因为我还有其他类,比如这个格式完全相同的类。

class Room(object):
    def __init__(self,name,items):
        self.name = name
        self.items = []

那个工作正常,但我没有看到代码中的差异。

3 个答案:

答案 0 :(得分:0)

那是因为inventory仅存在于Player类的实例化对象中。

如果你致电Player.inventory,它只会在声明为类级别属性时才会起作用,也就是说:

class Player(object):
    inventory = []

但是,您应该小心,因为如果您这样做,那么inventory对于Player所有实例都是常见的。在这种情况下,这可能不是你想要的。

答案 1 :(得分:0)

由于您使用的是Python 3,因此不再需要继承object。您是在课程.inventory上调用Player还是调用Player的实例?前者会导致您看到的错误,后者则不会。

另外,您还要覆盖输入参数inventory

class Player:
    def __init__(self, inventory):
        self.inventory = inventory

# here we instantiate an instance of Player
p = Player([])
p.inventory
# returns:
[]

# here we are calling the class directly
Player.inventory
# raises:
AttributeError: type object 'Player' has no attribute 'inventory'

答案 2 :(得分:0)

创建一个Player类的实例并访问该实例的库存。

p = Player(5) 打印(p.inventory)

另外,你的def __init__缺少':'