【发布时间】:2020-02-21 15:31:23
【问题描述】:
我想创建一个类来存储 init 中发生的关键错误列表。
class Basic:
missing_view_data_columns = []
def __init__(self, some_dict):
self.some_dict = some_dict
try:
self.basic_1 = self.some_dict['basic_1']
self.basic_2 = self.some_dict['basic_2']
except KeyError as e:
self.add_missing_data_column(e)
@classmethod
def add_missing_data_column(cls, column_name):
cls.missing_view_data_columns.append(column_name)
class Specific(Basic):
def __init__(self, some_dict):
super().__init__(some_dict)
try:
self.specific_1 = self.some_dict['specific_1']
self.specific_2 = self.some_dict['specific_2']
except KeyError as e:
self.add_missing_data_column(e)
rem = Specific({})
print(f"missing_keys: {rem.missing_view_data_columns}")
这是我的方法,但它不起作用。以下代码将仅打印出现的第一个关键错误。 我也可以说它看起来不太好,因为我需要写两次相同的异常。
您能给我建议如何创建此功能吗?
【问题讨论】:
-
如果
specific_1不在字典里,你还要检查specific_2是否在字典里吗? -
dict会通过从网页下载数据交给class,我需要知道这个dict是否包含init中定义的每个key。
-
为什么两个键查找都在
try中?如果第一个引发KeyError,第二个保证会被忽略,因为try块将在第一行退出 -
我只是想展示我想要实现的目标。在我的代码中,我计划拥有超过 2 个键,并且我不想创建 10 次尝试,除了块。
-
@Beorn 也许您可以将
tryexcept包装在每个键的 for 循环中?