vars() argument must have __dict__ attribute
时间: 2023-11-22 11:04:17 浏览: 22
asin.rar_ARGUMENT!_cody and waite
这个错误通常是因为你尝试使用 vars() 函数获取一个不具有 __dict__ 属性的对象的字典,比如 int、float、str 等基本类型。vars() 函数用于返回对象的 __dict__ 属性,如果对象没有 __dict__ 属性,则会抛出该错误。
如果你想获取对象的属性和值,可以使用 dir() 函数和 getattr() 函数来实现。例如:
```
class MyClass:
x = 1
y = 2
obj = MyClass()
print(dir(obj))
for attr in dir(obj):
value = getattr(obj, attr)
print('{}={}'.format(attr, value))
```
这段代码会输出 MyClass 类的所有属性和方法,以及它们的值。注意,这种方法只能获取对象的公共属性和方法。如果你需要获取对象的私有属性和方法,你可以使用 __dict__ 属性来访问。例如:
```
class MyClass:
def __init__(self):
self.__x = 1
self.__y = 2
obj = MyClass()
print(obj.__dict__)
```
这段代码会输出 obj 对象的 __dict__ 属性,其中包含了所有的属性和它们的值,包括私有属性。但是,强烈建议不要直接访问私有属性和方法,因为这会破坏对象的封装性,导致代码难以维护。
阅读全文