在python中的字典中存储函数和实例

时间:2012-03-18 18:11:31

标签: python

在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

我没注意语法错误。

2 个答案:

答案 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。)