gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:36:18 24 4
gpt4 key购买 nike

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

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__ .这样做的原因是,否则我们无法存储名称为 getkeys 的属性,因为这些是 dict 定义的方法。 .

solution by SilentGhost可能更有效并且同样有效,而无需诉诸于使用 __getattribute__。然后代码变为:

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

关于python - 是否存在可以保存任何用户属性的现有 Python 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1730769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com