我在Python中学习面向对象编程并组装一个冒险游戏。
每个房间都是一个继承自Scene类的对象实例。在每个房间里,我都有一个可以在那个房间里使用的命令列表。程序根据此列表检查用户输入以查看命令是否匹配(然后继续执行相应的功能:转到另一个房间,拿起钥匙,那种事情)。
我希望Scene类包含任何房间的股票命令列表(帮助,库存,那种东西)。但是当引擎检查每个特定房间中的命令时,它会覆盖超类中的命令列表。如何更改此代码,以便Castle(Scene)类中的命令中的项目还包含类Scene(对象)中命令中的项目?
很抱歉,如果这对你们来说有点基础。这里有类似的问题但我在代码中无法理解它们。我是OOP的新手。
class Scene(object):
commands = [
'help',
'inventory'
]
def action(self, command):
if command == 'inventory':
print "You are carrying the following items:"
# function to display items will go here
class Castle(Scene):
def enter(self):
print "You are in a castle"
commands = [
'get key',
'east'
]
def action(self, command):
if command == 'get key':
print "You pick up the key"
return 'castle'
elif command == 'east':
print "You go east"
return 'village'
else:
pass
return(0)
答案 0 :(得分:0)
您可以使用属性:
>>> class A(object):
... @property
... def x(self):
... return [1]
...
>>>
>>> class B(A):
... @property
... def x(self):
... return super(B, self).x + [2]
...
>>> b = B()
>>> b.x
[1, 2]
>>>