Python:如何实现multiple-inheritance?
Python: how to implement multiple-inheritance?
oop 新手。写入 Python 3.
我正在开发一款多人游戏。
这些是我需要的 classes:
- a class 'server' - 这是所有开始的主要入口点
- a class 'game',其中包含游戏逻辑
- a class 'gameroom' 允许同时进行多个游戏 运行
- a class 'player' 包含所有球员的详细信息
- a class 'session' 玩家和游戏的组合,包含玩家在玩游戏时的相关信息
显然会话应该是玩家和游戏室的 child。但是,session 实例如何知道它的 parents 是哪个 gameroom 和 player 实例?
假设:
- 我有 5 个玩家实例,玩家 ID 分别为 1、2、3、4 和 5
- 我有 2 个游戏室实例,房间 ID 分别为 1 和 2。
现在我想要 'session' 的 playerID = 2 和 roomID = 2 的实例。如何 'pass' roomID 和 playerID 到新的会话实例?
这是正确的实施方式吗?或者我可以以某种方式隐式创建会话实例而不需要将玩家和房间保存在变量中吗?
from player import player
from room import room
class session(player,room):
def __init__(self, player: player, room: room):
self.point = 0
self.player = player
self.room = room
print('player {} has joined room {}'.format(player.id,room.id))
继承不是这里的正确工具。您应该将 player
和 room
实例传递给 session
的 __init__
方法。
继承用于对 classes 的扩展建模。如果一个 class 继承另一个,例如Car
继承了Vehicle
,你用car = Car()
实例化了一个Car
对象,car
也是Vehicle
的一个实例。
您可以在 wikipedia article 关于继承的应用部分阅读更多关于此主题的内容。
类似这样,假设 Player 和 Room 具有实例属性 name 和 roomID
class Session(Player,Room):
def __init__(self, name, roomID ):
Player.__init__(self, name)
Room.__init__(self, roomID)
self.point = 0
print('player {} has joined room {}'.format(name,roomID))
oop 新手。写入 Python 3.
我正在开发一款多人游戏。 这些是我需要的 classes:
- a class 'server' - 这是所有开始的主要入口点
- a class 'game',其中包含游戏逻辑
- a class 'gameroom' 允许同时进行多个游戏 运行
- a class 'player' 包含所有球员的详细信息
- a class 'session' 玩家和游戏的组合,包含玩家在玩游戏时的相关信息
显然会话应该是玩家和游戏室的 child。但是,session 实例如何知道它的 parents 是哪个 gameroom 和 player 实例?
假设:
- 我有 5 个玩家实例,玩家 ID 分别为 1、2、3、4 和 5
- 我有 2 个游戏室实例,房间 ID 分别为 1 和 2。
现在我想要 'session' 的 playerID = 2 和 roomID = 2 的实例。如何 'pass' roomID 和 playerID 到新的会话实例?
这是正确的实施方式吗?或者我可以以某种方式隐式创建会话实例而不需要将玩家和房间保存在变量中吗?
from player import player
from room import room
class session(player,room):
def __init__(self, player: player, room: room):
self.point = 0
self.player = player
self.room = room
print('player {} has joined room {}'.format(player.id,room.id))
继承不是这里的正确工具。您应该将 player
和 room
实例传递给 session
的 __init__
方法。
继承用于对 classes 的扩展建模。如果一个 class 继承另一个,例如Car
继承了Vehicle
,你用car = Car()
实例化了一个Car
对象,car
也是Vehicle
的一个实例。
您可以在 wikipedia article 关于继承的应用部分阅读更多关于此主题的内容。
类似这样,假设 Player 和 Room 具有实例属性 name 和 roomID
class Session(Player,Room):
def __init__(self, name, roomID ):
Player.__init__(self, name)
Room.__init__(self, roomID)
self.point = 0
print('player {} has joined room {}'.format(name,roomID))