class Translator(object):
def __init__(self, tracking_col='tracking_id', coding_col='coding', qualifying_code_col='qualifying_code',
translation_col='translation'):
self._results = []
self.tracking_col = tracking_col
self.data_col = coding_col
self.definition_col = qualifying_code_col
self.translation_col = translation_col
self.__validate_parameters(self.__dict__)
def __validate_parameters(self, variable_values):
class_values = {}
for key, value in variable_values.items():
if type(value) is str:
class_values.setdefault(value, set()).add(key)
for key, values in class_values.items():
# If there is more than one value, there is a duplicate
if len(values) > 1:
raise Exception('Duplicate column names exist in parameters. \'{}\' are set to \'{}\'. '
'Do not use duplicate column names.'.format(values, key))
Diese Klasse kann die doppelten Werte für keine der 'col'-Variablen enthalten. Wenn doppelte Werte vorhanden sind, stürzt die Logik in der Klasse möglicherweise nicht ab, führt jedoch zu unvorhersehbaren Ergebnissen.Ermitteln von Duplikaten in den Variablenwerten der Klasseninstanz
Nach der Instanziierung wird meine Funktion __validate_parameters doppelte Werte erkennen und eine Exception auslösen. Das Problem ist, dass ich alle Werte in ein Wörterbuch ablege, indem ich ein neues Wörterbuch erstelle und schließlich manuell eine Ausnahme aufrufe (was von dem, was mir gesagt wurde, in jeder Situation falsch ist). Es ist auch ziemlich ausführlich.
Gibt es einen kürzeren und prägnanteren Weg, um Duplikate zu validieren, während ein Fehler ohne die obige Komplexität fortgeschrieben wird?
Es ist absolut nichts falsch daran, eine Ausnahme manuell auszulösen. – zvone