我根据这个问题创建了一个 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。
添加回答
举报
0/150
提交
取消