python - 伪字典作为属性

标签 python methods nested nested-class nested-attributes

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

在伪代码中,这看起来像这样:

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 实现一个类,但由于两者都只有几个简短的方法,我想知道是否有更优雅、更紧凑的方法这个。

最佳答案

为什么不定义自己的类?

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']

我不确定这些“伪字典”的值从何而来,因此您必须更新 __getitem__ 方法。

关于python - 伪字典作为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572526/

相关文章:

python - 如何使用 panda.read_sas 读取二进制压缩的 SAS 文件并另存为 feather

python - 为什么我的 csv 排序功能不起作用?

python - 判断闰年

Linq to SQL 嵌套选择组(按计数)

php - python和php可以访问同一个mysqldb吗?

python - 由 Django 中的字段更改触发的操作

java - 从之前的方法继承数据类型的方法?

javascript - 如何使用 javascript 移动窗口在计算机屏幕上的位置?

java - 获取 ArrayList 总和的方法

javascript - 如何比较多个数组中的相同值?