伪指令作为属性

2024-10-03 11:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python类C,它应该有两个伪-dictsa和{}。术语pseudo dicts意味着字典实际上并不存在,并且每次访问一个键时都会“重新计算”。在

在伪代码中如下所示:

class C:
    def a.__getitem__(self, key):
        return 'a'
    def b.__getitem__(self, key):
        return 'b'

>>> c = C()
>>> c.a['foo']
'a'
>>> c.b['bar']
'b'

我可以为ab实现一个类,但是由于这两个都只有一些简短的方法,我想知道是否有更优雅和紧凑的方法来实现这一点。在


Tags: 方法key代码selfreturn字典foodef
2条回答

像这样?在

from collections import defaultdict
class C:
    a = defaultdict(lambda:'a')
    b = defaultdict(lambda:'b')

c=C()
print c.a['foo']
print c.b['bar']

或者像这样的计算函数?在

^{pr2}$

为什么不定义自己的类呢?在

class PseudoDict(object):
    def __init__(self, c):
        self.c = c

    def __getitem__(self, key):
        return self.c.somethingmagical()

class C(object):
    def __init__(self):
        self.a = PseudoDict(self)
        self.b = PseudoDict(self)

c = C()
print c.a['foo']
print c.b['bar']

我不确定这些“伪dicts”的值来自何处,因此您必须更新__getitem__方法。在

相关问题 更多 >