在python字典中,可以将函数和类的实例存储为键值对吗?我试图将函数和类的实例存储为字典值,但它不起作用。是否有围绕它的解决方法,或者字典不是用于存储类和函数的实例?
仅供验证,
# I created a dictionary
diction = {'god': 'greed', 'hero': 'zero', 'human': 'pain'}
# and a simple class
class checker:
def __init__(self):
pass
# and created a instance of that class
obTry = checker()
# and when I try to add this as
diction['new':obTry]
它给了我TypeError
。
刚才意识到我是那个犯了愚蠢错误的人,我应该像
那样添加它diction['new'] = obTry
我没注意语法错误。
答案 0 :(得分:2)
实例和功能都可以是键:
In [151]: def foo(): pass
In [152]: {foo:1}
Out[152]: {<function __main__.foo>: 1}
In [153]: {foo:1, Fake(): 2}
Out[153]: {<__main__.Fake at 0x3e04160>: 2, <function __main__.foo>: 1}
In [154]: Fake
Out[154]: __main__.Fake
In [155]: type(Fake)
Out[155]: type
答案 1 :(得分:1)
唯一的限制是字典的键必须是可清除的。
粗略地说,这是为了确保一旦键已经放入字典中就无法修改密钥。因为那时他们会迷失方向。
(如果你不明白&#34; hashable&#34;的意思,请尝试启动here。)