【发布时间】:2023-03-03 00:22:01
【问题描述】:
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 将检测重复值并引发异常。问题是我将所有值转储到字典中,迭代以创建另一个字典,最后手动引发异常(据我所知,在任何情况下这样做都是错误的)。它也相当冗长。
是否有一种更短更简洁的方法来验证重复项,同时向上传播错误而没有上述复杂性?
【问题讨论】:
-
手动引发异常绝对没有错。
标签: python class exception reflection exception-handling