ThomasH的变体的更新:
def Struct(*args, **kwargs): def init(self, *iargs, **ikwargs): for k,v in kwargs.items(): setattr(self, k, v) for i in range(len(iargs)): setattr(self, args[i], iargs[i]) for k,v in ikwargs.items(): setattr(self, k, v) name = kwargs.pop("name", "MyStruct") kwargs.update(dict((k, None) for k in args)) return type(name, (object,), {'__init__': init, '__slots__': kwargs.keys()})这允许传入参数(和命名参数)
__init__()(无需任何验证-看起来很粗糙):
>>> Person = Struct('fname', 'age')>>> person1 = Person('Kevin', 25)>>> person2 = Person(age=42, fname='Terry')>>> person1.age += 10>>> person2.age -= 10>>> person1.fname, person1.age, person2.fname, person2.age('Kevin', 35, 'Terry', 32)>>>更新资料
有一个研究如何
namedtuple()在做到这一点collections.py。将创建该类并将其扩展为字符串并进行评估。还具有对酸洗等的支持。



