【发布时间】:2011-08-05 01:47:29
【问题描述】:
我正在编写一个包含int 到方法映射的dict 的类。但是,在此 dict 中设置值会导致 dict 被未绑定的函数填充。
class A:
def meth_a: ...
def meth_b: ...
...
map = {1: meth_a, 2: meth_b, ...}
for int in ...:
map[int] = meth_x
这不起作用有几个原因:
- 初始化类时方法未绑定,因为它们不在类
dict中? - 我无法使用
__get__手动绑定方法,因为类名尚未绑定到任何命名空间。
所以:
- 我该怎么做?
- 我必须在类初始化后退出类并定义字典吗?
- 真的有必要在绑定方法上调用
__get__吗?
更新0
方法会这样调用:
def func(self, int):
return self.map[int]()
另外关于数字索引/列表:并非所有索引都会出现。我不知道可以在 Python 中执行 list([1]=a, [2]=b, [1337]=leet),是否有等价的?我应该分配一个任意长度的列表并设置特定的值吗?我在这里唯一感兴趣的是最小化查找时间,它与O(1) 散列{} 真的有那么不同吗?我暂时忽略了这一点,因为它是过早的优化。
【问题讨论】:
-
带有数字索引的字典?你忘了列表吗?
-
@Matt Ball:请看更新,并传授相关智慧谢谢。
-
@Matt Joiner:看看我更新的答案。你在做这个吗?
-
你不需要这样做。看我的回答。
标签: python class dictionary initialization python-3.x