handle(msg: GameMessageAnnouncementMsg):
print(msg)
@staticmethod
def handle(msg: GameMessagePingMsg):
pass
Почему так нельзя перегрузить? А как можно?
Предполагаю что в первом случае ты выполняешь принт, а во втором-ничего
class MessageHandler: @staticmethod def handle(msg): if isinstance(msg, GameMessageAnnouncementMsg): MessageHandler.handle_announcement(msg) elif isinstance(msg, GameMessagePingMsg): MessageHandler.handle_ping(msg) @staticmethod def handle_announcement(msg: GameMessageAnnouncementMsg): print(msg) @staticmethod def handle_ping(msg: GameMessagePingMsg): pass
вот как-то не очень хочется пачку elif У меня штук 10 типов сообщений и это будет смотрется ужасно
@Tishka17 неужели никак иначе?
как?
Возможно ты ищешь это https://docs.python.org/3/library/functools.html#functools.singledispatch
Ну и typing.overload есть
вау круто А оверлоад получается и не нужен особо
Обсуждают сегодня