Я уже прочитал this, но мне хотелось бы наследовать методы класса в параметре.Как передать класс как параметр и методы наследования
Пример:
class TypeOfGame1(object):
def get_max_players(self):
return 2
class TypeOfGame2(object):
def get_max_players(self):
return 30
class Game(object):
def __init__(self, game_cls):
self.game = game_cls()
Тогда из этого выше, как я мог бы сделать код такие вещи, как:
a = Game(TypeOfGame1)
a.get_max_players() # should return 2
a = Game(TypeOfGame2)
a.get_max_players() # should return 30
Я хочу быть как можно короче и легко понять в долгосрочной перспективе. 'a.game.get_max_players()' длиннее, чем 'a.get_max_players()' (и у меня много сравнений и т. д.) –
Вам нужно будет реализовать '__getattr__', чтобы искать любые отсутствующие атрибуты на 'self.game'. Все это кажется немного назад - не должен ли 'TypeOfGame1' быть экземпляром или подклассом' Game'? – jonrsharpe
Да, возможно, наследуется с классом 'Game (TypeOfGame1, TypeOfGame2)', а затем в зависимости от параметра конструктора выберите, какой вызов сделать? Если это возможно (я так думаю), я не знаю, как –