Sto scrivendo un server socket e host server bidirezionale, asincrono. La classe di gestore di base su cui sto lavorando è la seguente:
class BaseAsyncSocketHandler:
async def send(self, data: bytes) -> int
Tuttavia, voglio scrivere una sottoclasse che manda due argomenti, un evento e dati arbitrari corrispondenti, che suggerisce la firma:
async def send(self, event: str, data: object) -> int:
return await super().send(event_data_magic_to_bytes(event, data))
Sfortunatamente, questo viola il principio di sostituzione di Liskov, e non penso che scriverlo come un mixin migliorerà la situazione, quindi spero che qualcuno abbia già visto questo o possa pensare ad un modello di design migliore ( o dimmi che questa è un'astrazione superflua in primo luogo.