我正在寻找与namedtuples
非常相似的东西:
>>> from collections import namedtuple
>>> Party = namedtuple('Party', ['guests', 'location'])
>>> p = Party(['Jed', 'Fred', 'Kathy'], "Steve's House")
我使用包装类来添加可扩展性:
>>> class Party(namedtuple('Party', ['guests', 'location'])):
...
但有两点不同。我希望这些字段是可变的,我希望继承可以工作。 (现在我不认为有一种方法可以让一个名字元素从另一个继承)。
我已经听说过types.SimpleNamespace
,但我认为它不允许在创作中进行位置论证(如果我错了,有人会纠正我)。我喜欢namedtuples,因为它们让我不必写__init__
,__repr__
和__eq__
,这些都是我用例所需要的。
对我来说重要的是__init__
,__repr__
和__eq__
的内置实现,因此我不必自己编写。{0}}我将需要许多(30+)这些类定义,其中一些将有许多(15+)个字段。
对我来说什么不重要(现在):记忆效率。我不打算在任何时候都有超过五百个实例。
我想要自己动手,但想确保我不会重新发明轮子。
答案 0 :(得分:1)
对于一个问题,您需要50个类定义,少于五百个实例。 。 。总共 ?也许你应该重新考虑问题并找到一个非常不同的方法?试着看词典?
item1 = {'party':'easter', 'guests': ['john', fred','kathy'], 'location':'here'}
比你只需要标准的python dict-class,可以轻松测试字段存在,添加字段等,它有init,repr和eq。
或提供有关此问题的更多信息。