您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

类工厂产生简单的类结构类?

类工厂产生简单的类结构类?

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。将创建该类并将其扩展为字符串并进行评估。还具有对酸洗等的支持

其他 2022/1/1 18:39:06 有412人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶