当我需要具有不同属性的多个对象时,我可以使用它:
class struct(object):
   def __init__(self,*args,**kwargs):
      for key,val in kwargs.items():
         setattr(self,key,val)
但我想知道是否已经没有内置?
除非我不理解你的问题,否则这不是我们用来dict做什么的?当然,它的符号略有不同,但是对象的属性在内部仍然存储在dict(即__dict__)中.这是一个符号问题.
但是,如果你坚持,那么这是一种方法:
>>> class struct(dict):
...     def __getattribute__(self, key):
...         return self[key]
... 
>>> s = struct(a=5, b=7)
>>> s.a
5
注意我正在使用__getattribute__而不是__getattr__.其原因在于,否则我们无法存储名称为get和的属性keys,因为这些是由定义的方法dict.
SilentGhost的解决方案可能更有效,并且可以正常工作,而无需使用__getattribute__.代码然后变成:
>>> def struct(**kwargs):
...     return type('Struct', (object,), kwargs)
... 
>>> s = struct(a=5, b=7)
>>> s.a
5