Расширяя комментарий @ PM2Ring, вы должны сделать несколько вещей:
1.) Измените expected_keys
на set
(в настоящее время это tuple
. Набор обозначен {}
).Согласно комментарию @ PM2Ring, вы можете держать его в чистоте и порядке, если вместо этого он будет обозначен class attribute
, если он фиксирован для объекта класса:
class Spam(object):
expected_keys = {
'key1',
'key2',
'key3',
'key4',
}
def __init__(self, config_dict):
# continue defining the rest of your class...
2.) Измените свою последнюю проверку следующим образом:
if not expected_keys.issubset(config_dict.keys()):
raise ValueError('Config dict does not have all necessary keys.')
Это проверяет, содержит ли config_dict
все ваши expected_keys
, но все равно будет проверяться, если config_dict
имеет другие ключи, отличные от ожидаемых.
Если согласно вашему комментарию, config_dict
должен иметь точные ключи ( не больше и не меньше ), чем expected_keys
, тогда вы должны подтвердить как:
if not expected_keys == config_dict.keys():
raise ValueError('Config dict does not have all necessary keys.')