我根据此question创建了dict的子类。我想做的是能够使用方括号表示法创建子类的新字典。即,当我有{“ key”:“ value”}时,我希望它调用mydict((“” key“,” value“)))。这可能吗?
答案 0 :(得分:4)
不。并且有充分的理由:这将违反人们阅读代码的期望。可能还会破坏您导入的任何第三方库,这些库会(合理地)期望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"})
如果您已经搞砸了,尽管必须按照from
的自定义路线进行操作。