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))
このクラスは、 'col'変数の重複値を持つことはできません。重複する値が存在する場合、クラス内のロジックがさらにクラッシュすることはありませんが、予期しない結果が発生します。クラスインスタンスの重複変数の検出
私の関数__validate_parametersは重複した値を検出し、例外を発生させます。問題は、すべての値を辞書にダンプして別の辞書を作成し、最後に手作業で例外を発生させることです(どのような状況で行っても間違っていると言われています)。かなり冗長です。
上記の複雑さを排除してエラーを伝える一方で、重複を検証するための簡潔で簡潔な方法はありますか?
例外を手作業で発生させることは間違いありません。 – zvone