python - 简洁灵活的结构体定义

标签 python

我需要在 Python 2.7 中定义一堆灵活的结构(具有简单命名字段集合的对象,您可以稍后在其中添加新字段,但我不需要方法或继承或类似的东西)。 (上下文是我正在使用 struct.unpack_from 从二进制文件中读取内容,然后向结果中添加更多数据。)

一个类满足要求,例如

class Thing:
    def __init__(self, foo, bar):
        self.foo = foo
        self.bar = bar

唯一的缺点就是每个字段名都要写三遍。 collections.namedtuple 提供了更精确的定义语法,但您不能向结果对象添加字段。

有没有一种方法可以使类具有至少一些 collections.namedtuple 的简洁性?

最佳答案

我发现有时有用的模式是

class Obj(object):
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)

你可以像这样使用它

p = Obj(x=10, y=20)

关于python - 简洁灵活的结构体定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832165/

相关文章:

python - 如何在 python 中对字符串使用格式说明符

python - Windows CMD 用python的sys.stdout在打印行的末尾添加一个随机数

python - Canvas (和/或标签框)背景,奇数灰色

python - python中逆ERF函数的命令

python - 弹出窗口中的 Kivy 按钮不调用函数

python - 加快 Python 循环追加速度

python - 属性错误 : 'dict' object has no attribute 'read' while using Tweepy

python - 在 Django Rest Framework 中使用无限滚动?

Python包?

python - 模板继承: pass data from parent to child