I have that Code example:
from time import sleep import asyncio class bird: def __init__(self, sleeptime=1): self.var = sleeptime def wait_meep(self): sleep(self.var) print("Meep") def do_sth(self): print("Dop Dop Do do ...") class bird_async: def __init__(self, sleeptime=1): self.var = sleeptime async def wait_meep(self): await asyncio.sleep(self.var) print("Meep") def do_sth(self): print("Dop Dop Do do ...")
As you can see, both clients are mostly identical and shall contain the same name (so that everyone knows what to expect). Now I want to be DRY and write
bird_async(bird). Because every extension in
bird shall be used in
bird_async as well. This is possible, but my coworker says, it is not SOLID, because I have overwritten
wait_meep. Now I am looking for different soultions and found abstract classes.
What I don’t know is, if creating an abstract class
birdBase(ABC) would be SOLID as well. I would overwrite there as well, because first it was a function and then a couroutine, or am I wrong here?
What could be a SOLID and DRY solution to get those both classes together, without renaming the methods?
Source: Python Questions