Ich habe eine Klasse erstellt, die ein tuple
Wrapper ist und Tupel Item Mutationen nicht unterstützt. Sollte ich __setitem__
und __delitem__
Umsetzung verlassen oder diese Methoden wie z. unten (also in Art von Refused Bequest Code Geruch fallen)? Welcher Ansatz ist pythischer? Sind in diesem Fall keine benutzerdefinierten Ausnahmen besser?Python: magische Methoden, die nicht verwendet werden sollten
def __setitem__(self, key, value):
"""
:raise: Always.
:raises: TypeError
"""
self.data_set[key] = value # Raise from tuple.
def __delitem__(self, key):
"""
:raise: Always.
:raises: TypeError
"""
raise TypeError("Item deletion is unsupported") # Custom exceptions thrown.
Mit Refused Bequest meine ich, dass diese Klasse behauptet, "__setitem__" und "__delitem__" zu implementieren, aber das Verhalten zeigt, dass diese Operationen nicht unterstützt werden. – JCode
AOK. Nun, eigentlich (wie ich bereits erwähnte), wenn das Ziel darin besteht, die Zuweisung und Löschung von Objekten nicht zu unterstützen, macht es keinen Sinn, diese Methoden zu implementieren. –