我正在尝试制作一款游戏,我为这款游戏添加了一个类:
class Player(object):
def __init__(self,inventory):
self.inventory = []
现在,当我尝试以任何方式致电Player.inventory
时,它会给我一个错误说:
玩家没有属性'库存'
我不确定我做错了什么,因为我还有其他类,比如这个格式完全相同的类。
class Room(object):
def __init__(self,name,items):
self.name = name
self.items = []
那个工作正常,但我没有看到代码中的差异。
答案 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__缺少':'