为了账号安全,请及时绑定邮箱和手机立即绑定

我可以覆盖 {} 括号在 python 中的作用吗?

我可以覆盖 {} 括号在 python 中的作用吗?

翻过高山走不出你 2021-08-05 10:26:00
我根据这个问题创建了一个 dict 的子类。我想要做的是能够使用括号表示法创建我的子类的新字典。也就是说,当我有 {"key":"value"} 时,我希望它调用 mydict(("key","value"))。这可能吗?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

不。并且有充分的理由:它会违反人们阅读代码的期望。它也可能会破坏您导入的任何第三方库,这些库(合理地)期望 dict 文字是标准的 Python 词典。


无需大量额外输入即可解决此问题的更好方法是简单地.from在自定义字典类上添加一个静态方法,该方法尝试使用文字并返回自定义字典的实例。


MyDict.from({

  "key": "value"

})

的实现from可能看起来像


@classmethod

def from(cls, dictionary):

    new_inst = cls()

    for key, value of dictionary.items():

        new_inst[key] = value


    return newInst

根据评论编辑:

user2357112 正确地指出,只要 dict 构造函数的签名与您的自定义类相同,您就可以使用构造函数:


some_instance = MyDict({"key": "value"})

如果你弄乱了它,尽管你必须走自定义路线 a la from。


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号