Python:如何实现多重继承?

2024-10-03 11:24:47 发布

您现在位置:Python中文网/ 问答频道 /正文

oop的新功能。用Python 3编写。

我正在开发一个多人游戏。 以下是我需要的课程:

  • 一个类“服务器”-它是所有程序开始的主要入口点
  • 包含游戏逻辑的类“game”
  • 允许同时运行多个游戏的类“gameroom”
  • 包含所有玩家详细信息的类“玩家”
  • 一个类“会话”,是玩家和游戏的组合,包含玩家在玩游戏时的相关信息

diagram of classes

显然,会话应该是玩家和游戏室的孩子。然而,会话实例如何知道gameroom的哪个实例和玩家是它的父母

假设:

  • 我有5个PlayerId为1、2、3、4和5的玩家实例
  • 我有两个游戏室,其中一个房间是1号,另一个房间是2号

现在我想要一个playerID=2和roomID=2的“session”实例。如何将roomID和playerID“传递”到会话的新实例

这是正确的实现吗?或者我可以隐式地创建会话实例,而不需要在变量中保存player和room吗

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

Tags: 实例fromimportselfid游戏session玩家
2条回答

继承在这里不是正确的工具。您应该只将playerroom实例传递给session__init__方法

继承用于为类的扩展建模。如果一个类继承另一个类,例如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))

相关问题 更多 >