gpt4 book ai didi

python - 如何获取 Python 类属性(而不是实例)的字典?

转载 作者:行者123 更新时间:2023-12-01 08:05:08 24 4
gpt4 key购买 nike

我想访问类中的属性,以便可以动态更改它们。

我在这个网站上看到了一些答案,表明该类的 __dict__ 将提供此功能,正如我尝试使用以下代码一样:

class Item:
def __init__(self):
self.name = ''
self.description = ''
self.weight = ''
self.volume = ''

print(Item.__dict__)

{'__module__': '__main__', '__init__': <function Item.__init__ at 0x0000026F3F5988C8>, '__dict__': <attribute '__dict__' of 'Item' objects>, '__weakref__': <attribute '__weakref__' of 'Item' objects>, '__doc__': None}

我似乎想访问 Item.__dict__.['__dict__']但我不知道该怎么做。

最佳答案

正如其他人所指出的,为了查看实例属性(而不是类属性),您必须实例化该类型的对象。但是,最好使用内置 vars ,而不是使用 __dict__ 属性。功能。

item = Item()
items_attrs = vars(item)

这在底层做了同样的事情,但看起来更Pythonic。

<小时/>

您还可以定义 __slots__类上的属性。这将以一种可能不受欢迎的方式改变类(及其对象)的行为,但允许您轻松访问您感兴趣的信息。值得注意的是,此行为发生了变化:

Without a __dict__ variable, instances cannot be assigned new variables not listed in the __slots__ definition. Attempts to assign to an unlisted variable name raises AttributeError. If dynamic assignment of new variables is desired, then add '__dict__' to the sequence of strings in the __slots__ declaration.

class Item(object):
__slots__ = ['name',
'description',
'weight',
'volume']

def __init__(self):
self.name = ''
self.description = ''
self.weight = ''
self.volume = ''

Item_attrs = Item.__slots__
item = Item()
item_attrs = item.__slots__

assert item_attrs == Item_attrs

关于python - 如何获取 Python 类属性(而不是实例)的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576472/

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