如何在Python中继承列表项?

时间:2015-02-27 11:19:51

标签: python oop inheritance

我在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)

1 个答案:

答案 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]
>>>