【发布时间】:2020-08-09 04:32:24
【问题描述】:
oop 新手。用 Python 3 编写。
我正在开发一款多人游戏。 这些是我需要的课程:
- “服务器”类 - 这是一切开始的主要入口点
- “游戏”类,包含游戏逻辑
- 允许同时运行多个游戏的“游戏室”类
- 一个包含所有玩家详细信息的“玩家”类
- 一个“会话”类,它是玩家和游戏的组合,包含玩家在玩游戏时的相关信息
显然 session 应该是 player 和 gameroom 的孩子。然而,一个 session 的实例如何知道 gameroom 和 player 的哪个实例是它的父母呢?
假设:
- 我有 5 个播放器实例,播放器 ID 分别为 1、2、3、4 和 5
- 我有 2 个游戏室实例,房间 ID 为 1 和 2。
现在我想要一个 playerID = 2 和 roomID = 2 的“会话”实例。如何将 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))
【问题讨论】:
-
TBH 会话是专门的玩家这一点并不明显 - 会话有多个玩家的多人游戏怎么样 - 措辞告诉我玩家是会话的属性,即没有遗产。总的来说,我的建议是尽可能避免多重继承和深度继承树。
标签: python oop subclass multiple-inheritance