首页Python【Python内置函数】v...

【Python内置函数】vars()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

vars() 函数是 Python 中的一个内置函数,用于返回模块、类、实例或任何其他具有 __dict__ 属性对象的 __dict__ 属性。
vars() 函数仅适用于具有 __dict__ 属性的对象。大多数类和实例都具有该属性,但也有一些特殊情况,比如使用 __slots__ 来限制对象属性的情况,这时可能不具有 __dict__ 属性。如果指定了一个对象,但它没有 __dict__ 属性则会引发 TypeError 异常。

Python中,__slots__ 是一个特殊的类属性,它用于声明类的实例将拥有哪些属性。使用 __slots__ 可以限制该类实例能拥有的属性名称,并在一定程度上节省内存,特别是在创建大量实例时。这是因为使用 __slots__ 时,Python不会为每个实例创建一个 __dict__ 字典来存储属性,而是使用一个固定大小的数组。

vars() 函数的基本语法如下:
vars(object)
参数说明:
  • object:可选参数,要获取属性的对象,可以是模块、类、实例对象或其他具有 __dict__ 属性的对象。如果不提供参数,则vars()函数将返回当前作用域的局部变量命名空间,即等同于locals()函数。
返回值:

vars()函数返回一个字典对象,其中包含了对象的命名空间中的所有变量和它们的值:

  • 如果 object 是模块,返回模块的 __dict__ 属性,其中包含了模块的所有全局变量和函数。
  • 如果 object 是类,返回类的 __dict__ 属性,其中包含了类的所有属性和方法。
  • 如果 object 是实例对象,返回实例对象的 __dict__ 属性,其中包含了实例对象的所有属性和它们的值。
02
获取对象属性

下面是一些使用 vars() 函数的示例:

  • 示例 1:模块对象

有一个名为 mymodule.py 的模块,内容如下:
x = 10def my_function():    pass
在模块中使用 vars() 函数可以获取模块的所有全局变量和函数:
# 导入模块
import mymodule

# 使用 vars() 获取模块对象的属性
vars(mymodule).keys()
# 输出:dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__file__', '__cached__', '__builtins__', 'x', 'my_function'])

  • 示例 2:类对象

在类中使用 vars() 函数可以获取类的所有属性和方法:

class MyClass:
    class_var = 5
    def __init__(self):
        self.instance_var = 10

# 使用 vars() 获取类对象的属性
vars(MyClass)
# 输出:mappingproxy({'__module__': '__main__',
#                   'class_var': 5,
#                   '__init__': <function __main__.MyClass.__init__(self)#     >,
#                   '__dict__': <attribute '__dict__' of 'MyClass' objects>,
#                   '__weakref__': <attribute '__weakref__' of 'MyClass' objects>,
#                   '__doc__': None})


  • 示例 3:实例对象

在实例对象中使用 vars() 函数可以获取对象的所有属性和属性值:

# 继续使用上面的 MyClass 类
my_instance = MyClass()

# 使用 vars() 获取实例对象的属性
vars(my_instance)
# 输出:{'instance_var': 10}


03
修改对象属性

vars() 函数返回的是对象的 __dict__ 属性,即返回的是对象属性的引用。如果修改了返回的字典,对象的属性值也会相应地发生变化。

在下面的示例中,使用 vars()  函数修改了student对象的age属性的值以及动态添加对象属性 height

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

student = Student("Bob", 25)

# 修改对象的属性
vars(student)['age'] = 26
# 添加对象属性
vars(student)['height'] = 178

# 查看修改后的属性
print(vars(student))
# 输出:{'name': 'Bob', 'age': 26, 'height': 178}

需要注意的是,虽然 vars() 函数可以修改对象属性值,但这不是推荐的做法。通常情况下,应该直接访问对象的属性并进行修改,而不是绕过对象的方法。

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments