我正在努力提高我的代码设计技能,但不确定该怎么做。目前我有一个类,它需要在init上设置特定的键,它看起来像这样:
class A:
def __init__(self):
try:
self.key1 = some_key_finder("key1")
self.key2 = some_key_finder("key2")
self.key3 = some_key_finder("key3")
except KeyError as err:
raise SecretNotFoundError(f"...{err}")
最初它只设置了一个关键点,但随着reqs的改变,我不得不再设置两个关键点。我的问题是:如何使上面的代码更具可伸缩性,并处理(假设)不断增加的键数量?
发布于 2021-09-22 00:43:28
您可以将键及其结果存储在一个class属性中:
class A:
def __init__(self, keys=None) -> None:
self.keys = dict()
if keys:
for key in keys:
self.enroll(key)
def enroll(self, key: str) -> None:
try:
self.keys[key] = some_key_finder(key)
except KeyError as err:
raise SecretNotFoundError(f"...{err}")
def lookup(self, key: str) -> str:
return self.keys[key]
稍后,您可以注册新密钥,如下所示:
a = A(keys=['key1', 'key2', 'key3'])
a.enroll(key='key4')
https://stackoverflow.com/questions/69280626
复制相似问题