Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在python类中处理越来越多的操作

如何在python类中处理越来越多的操作
EN

Stack Overflow用户
提问于 2021-09-22 00:23:26
回答 1查看 26关注 0票数 1

我正在努力提高我的代码设计技能,但不确定该怎么做。目前我有一个类,它需要在init上设置特定的键,它看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的改变,我不得不再设置两个关键点。我的问题是:如何使上面的代码更具可伸缩性,并处理(假设)不断增加的键数量?

EN

回答 1

Stack Overflow用户

发布于 2021-09-22 00:43:28

您可以将键及其结果存储在一个class属性中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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]

稍后,您可以注册新密钥,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = A(keys=['key1', 'key2', 'key3'])
a.enroll(key='key4')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69280626

复制
相关文章

相似问题

如何在python中处理stdout命令,如"with () as f:“

26

如何在Python中处理类**kwargs?

16

Python会话(如php)类

21

处理非ascii字符,如python中的磅。

14

如何在C中处理python设置的对象操作?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文