您的位置:

Python vars函数:获取对象的属性和值

一、vars函数的引入

在Python开发中,我们经常需要查看对象的属性和值。Python提供了一个内置函数vars(),它返回一个对象属性和其值的字典。

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    person = Person("张三", 18)
    print(vars(person))
    # 输出结果:{'name': '张三', 'age': 18}

在上面的例子中,我们定义了一个Person类,并创建了一个person对象。通过vars(person)方法,我们可以获取到person对象中所有属性的名称和对应的值,并以字典的形式返回。

二、vars函数的参数

vars函数也可以接收一个参数,如果传递给vars函数一个对象,它会返回该对象的属性和属性值。如果不传递参数,vars函数返回当前作用域中的所有变量。

    # 获取当前作用域中的所有变量
    print(vars())
    
    a = 10
    b = "hello"
    print(vars())
    # 输出结果:{'a': 10, 'b': 'hello'}

在上面的例子中,我们先调用了vars()函数获取当前作用域中的所有变量,输出的结果是一个字典,不包含任何变量。然后我们定义了两个变量a和b,再次调用vars()函数,此时输出结果包含了两个变量a和b。

三、vars函数的应用

1. 动态更新对象属性

通过vars函数获取到一个对象的属性和值之后,我们可以动态更新该对象的属性值。

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    person = Person("张三", 18)
    print(vars(person))
    # 输出结果:{'name': '张三', 'age': 18}
    
    vars(person)['name'] = '李四'
    print(vars(person))
    # 输出结果:{'name': '李四', 'age': 18}

在上面的例子中,我们先创建了一个person对象,并使用vars()函数获取到person对象中所有属性的名称和对应的值。然后我们使用vars(person)['name']的方式可以获取到person对象的属性name的值,并将其修改为'李四'。最后再次调用vars(person),可以看到person对象的name属性已经更新为'李四'。

2. 动态添加对象属性

通过vars函数,我们可以动态地为对象添加属性。

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age

    person = Person("张三", 18)
    print(vars(person))
    # 输出结果:{'name': '张三', 'age': 18}
    
    vars(person)['gender'] = '男'
    print(vars(person))
    # 输出结果:{'name': '张三', 'age': 18, 'gender': '男'}

在上面的例子中,我们使用vars(person)['gender']的方式可以为person对象新添加一个属性gender,并将其值设置为'男'。最后再次调用vars(person),可以看到person对象的gender属性已被成功添加。

3. 格式化输出对象属性

通过vars函数获取到一个对象的属性和值之后,我们可以对这些属性值进行格式化输出。

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age

    person = Person("张三", 18)
    for key, value in vars(person).items():
        print("{0}: {1}".format(key, value))
    # 输出结果:
    # name: 张三
    # age: 18

在上面的例子中,我们使用vars(person).items()的方式可以获取到person对象中所有属性的键值对。然后我们遍历这些键值对,并通过字符串格式化的方式将键和值按照指定格式输出。

四、小结

vars函数是Python内置函数中非常常用的一个函数,它可以帮助我们快速获取到一个对象的属性和值,并支持动态更新和添加对象属性。在Python开发中,vars函数为我们处理对象的属性和值提供了非常便利的方式。