我有3个班级:
class Scene(object):
def enter(self):
pass
class CentralCorridor(Scene):
def enter(self):
pass
class Map(object):
def __init__(self, start_game):
pass
类地图的启动方式如下:
a_map = map('central_corridor')
这意味着有一张地图(显然不是像迷宫一样的图形假设),其中游戏的第一个场景(游戏就像zork)是中央走廊。
所以我想在map类中使用类CentralCorridor的enter方法,但我对CnetralCorridor类本身继承类Scene这一事实感到困惑。我不知道如何使用此处所述的委派方法:https://stackoverflow.com/a/2797332/2572773
答案 0 :(得分:1)
1)Python类以大写字母开头是一个很好的做法。 此外,名称 map 是一个内置的python函数。
2)在地图类上传递Scene实例有什么问题?
class Map(object):
def __init__(self, scene):
self.scene = scene
def enter(self):
self.scene.enter()
a_map = Map(CentralCorridor())
答案 1 :(得分:0)
此代码是否有帮助:
class Scene(object):
def enter(self):
print 'Scene Object'
class CentralCorridor(Scene):
def enter(self):
print 'CentralCorridor object'
class Map(object):
def __init__(self, start_game):
self.start_game = start_game
if self.start_game == 'central_corridor':
whatever = CentralCorridor().enter()
a_map = Map('central_corridor')
你不应该使用map,而是使用Map,因为map()是一个内置函数
答案 2 :(得分:-1)
首先,您应该重命名地图类,因为map
是一个内置函数,你会在这里暗示。
要回答您的问题:您可以调用CentralCorridor.enter(self)在当前实例上显式调用CentralCorridor的enter方法(不必 是CentralCorridor实例)。