猿问

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

我根据这个问题创建了一个 dict 的子类。我想要做的是能够使用括号表示法创建我的子类的新字典。也就是说,当我有 {"key":"value"} 时,我希望它调用 mydict(("key","value"))。这可能吗?


翻过高山走不出你
浏览 193回答 1
1回答

繁星点点滴滴

不。并且有充分的理由:它会违反人们阅读代码的期望。它也可能会破坏您导入的任何第三方库,这些库(合理地)期望 dict 文字是标准的 Python 词典。无需大量额外输入即可解决此问题的更好方法是简单地.from在自定义字典类上添加一个静态方法,该方法尝试使用文字并返回自定义字典的实例。MyDict.from({  "key": "value"})的实现from可能看起来像@classmethoddef 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。
随时随地看视频慕课网APP

相关分类

Python
我要回答