Eine Nebenwirkung von ce Frage ist, dass ich dazu verleitet wurde ce poste in der es heißt:
Wann immer isinstance verwendet wird, gabelt sich der Kontrollfluss; ein Objekttyp geht den einen Codepfad hinunter, und andere Objekttypen gehen den anderen hinunter --- selbst wenn sie die gleiche Schnittstelle implementieren!
und suggeriert, dass dies eine schlechte Sache ist.
Allerdings habe ich Code wie diesen schon einmal verwendet, und zwar auf eine Art und Weise, die ich für OO hielt. Etwas wie das folgende:
class MyTime(object):
def __init__(self, h=0, m=0, s=0):
self.h = 0
self.m = 0
self.s = 0
def __iadd__(self, other):
if isinstance(other, MyTime):
self.h += other.h
self.m += other.m
self.s += other.s
elif isinstance(other, int):
self.h += other/3600
other %= 3600
self.m += other/60
other %= 60
self.s += other
else:
raise TypeError('Addition not supported for ' + type(other).__name__)
Daher meine Frage:
Ist diese Verwendung von isinstance
"pythonische" und "gute" OOP?