跳到主要内容

Python vars() 函数

vars() 方法返回给定对象的 __dict__(字典映射)属性。

示例

# 返回 list 的 __dict__
print(vars(list))

# 输出:
# {'__repr__': <slot wrapper '__repr__' of 'list' objects>, '__hash__': None, '__getattribute__': <slot wrapper '__getattribute__' of 'list' objects>, ….}

vars() 语法

vars() 方法的语法是:

vars(object)

vars() 参数

vars() 方法接受一个参数:

  • object - 可以是模块、类、实例或任何具有 __dict__ 属性的对象

vars() 返回值

vars() 方法返回:

  • 给定对象的 __dict__ 属性。
  • 当没有传递参数时,返回本地作用域中的方法
  • 如果传递的对象没有 __dict__ 属性,则返回 TypeError

示例:Python vars()

# 没有参数的 vars()
print (vars())

# 返回字典对象的 __dict__
print(vars(dict))

输出:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}

{'__repr__': <slot wrapper '__repr__' of 'dict' objects>, '__hash__': None, '__getattribute__': <slot wrapper '__getattribute__' of 'dict' objects> ….}

示例 2:没有 dict 属性参数的 vars()

string = "Jones"

# 字符串的 vars()
print(vars(string))

输出:

TypeError: vars() 的参数必须具有 __dict__ 属性

在上面的示例中,我们向 vars() 方法传递了字符串 "Jones"

由于字符串没有 __dict__ 属性,我们得到了一个 TypeError

示例 3:自定义对象的 vars()

class Fruit:
def __init__(self, apple = 5, banana = 10):
self.apple = apple
self.banana = banana

eat = Fruit()

# 返回 eat 对象的 __dict__
print(vars(eat))

输出

{'apple': 5, 'banana': 10}

在上面的示例中,我们使用了类 Fruit 的自定义对象 eat 来调用 vars() 方法。

如你所见,Fruit 类中有两个变量 apple 和 banana,其值分别为 510

因此,我们通过 vars() 方法以字典形式获得输出 {'apple': 5, 'banana': 10}

推荐阅读: