是否存在可以保存任何用户属性的现有Python类?

Geo*_*Geo 2 python struct

当我需要具有不同属性的多个对象时,我可以使用它:

class struct(object):
   def __init__(self,*args,**kwargs):
      for key,val in kwargs.items():
         setattr(self,key,val)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否已经没有内置?

Ste*_*202 9

除非我不理解你的问题,否则这不是我们用来dict做什么的?当然,它的符号略有不同,但是对象的属性在内部仍然存储在dict(即__dict__)中.这是一个符号问题.

但是,如果你坚持,那么这是一种方法:

>>> class struct(dict):
...     def __getattribute__(self, key):
...         return self[key]
... 
>>> s = struct(a=5, b=7)
>>> s.a
5
Run Code Online (Sandbox Code Playgroud)

注意我正在使用__getattribute__而不是__getattr__.其原因在于,否则我们无法存储名称为get和的属性keys,因为这些是由定义的方法dict.

SilentGhost解决方案可能更有效,并且可以正常工作,而无需使用__getattribute__.代码然后变成:

>>> def struct(**kwargs):
...     return type('Struct', (object,), kwargs)
... 
>>> s = struct(a=5, b=7)
>>> s.a
5
Run Code Online (Sandbox Code Playgroud)