Python 中是否有类似于 C 中的结构的数据类型?

新手上路,请多包涵

Python 中是否有类似于 C++ 中的结构的数据类型?我喜欢结构功能 myStruct.someName 。我知道类有这个,但我不想每次我需要一个“容器”来存放一些数据时都写一个类。

原文由 Aufwind 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 612
2 个回答

为什么不?上课很好。

如果你想节省一些内存,你可能还想使用 __slots__ 所以对象没有 __dict__ 。有关 slots 的详细信息和用法, 请参阅 http://docs.python.org/reference/datamodel.html#slots ?一些有用的信息。

例如,一个只包含两个值的类( ab )可能如下所示:

 class AB(object):
    __slots__ = ('a', 'b')


If you actually want a dict but with obj.item access instead of obj['item'] , you could subclass dict and implement __getattr__ and __setattr__ to behave like __getitem____setitem__

原文由 ThiefMaster 发布,翻译遵循 CC BY-SA 3.0 许可协议

dataclass 现在是 Python 3.7 中内置的!

 from dataclasses import dataclass

@dataclass
class EZClass:
    name: str='default'
    qty: int

测试:

 classy = EZClass('cars', 3)
print(classy)

输出:

 EZClass(name='cars', qty=3)

除了自动初始化和 __repr__ 它生成的方法外,它还自动创建一个 __eq__ 方法,以简单直观地比较类的两个实例。

PEP 557

使用 dataclasses 包 向后移植到 Python 3.6。

原文由 ChaimG 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题