描述 vars() 函数返回对象object的属性和属性值的字典对象。
语法 vars() 函数语法:
参数
返回值 返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。
实例 以下实例展示了 vars() 的使用方法:
1 2 3 4 5 6 7 8 9 10 >>>print (vars ()) {'__builtins__' : <module '__builtin__' (built-in )>, '__name__' : '__main__' , '__doc__' : None , '__package__' : None } >>> class Runoob :... a = 1 ... >>> print (vars (Runoob)){'a' : 1 , '__module__' : '__main__' , '__doc__' : None } >>> runoob = Runoob()>>> print (vars (runoob)){}
vars 的一个用法是动态生成类成员。
1 2 3 4 5 6 7 8 9 10 11 12 from datetime import timedeltafrom enum import Enumclass Period (timedelta, Enum): "different lengths of time" _ignore_ = 'Period i' Period = vars () for i in range (367 ): Period['day_%d' % i] = i print (Period.day_5.value)
这里的 vars 表示的是类定义内部的局部作用域,相当于分别执行下面这些代码:
1 2 3 4 5 6 class Period (timedelta, Enum): "different lengths of time" day_1 = timedelta(1 ) day_2 = timedelta(2 ) ... day_366 = timedelta(366 )
由于类定义内部是单独的作用域,因此用 globals 或者 locals 达不到相同的效果,而在类定义中,因为类名称还不可用,因此也无法用 setattr 实现。