Python __dict__是什么?有什么作用?

1. Python中的__dict__

在Python中,每个对象都有一个名为__dict__的特殊属性,它是一个字典(dictionary),用于存储对象的属性和值。这个字典将对象的属性名作为键,属性值作为对应的值。

下面我们来看一个简单的例子,创建一个名为Person的类:

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

person1 = Person("Alice", 25)

print(person1.__dict__)

运行上面的代码,输出结果为:{'name': 'Alice', 'age': 25}。我们可以看到,__dict__返回了一个包含对象的属性和值的字典。

2. __dict__的作用

__dict__属性的主要作用是允许我们在运行时动态地添加、修改和删除对象的属性。通过操作__dict__字典,我们可以直接对对象的属性进行读取或修改,而无需使用点运算符。

2.1 动态添加属性

使用__dict__,我们可以在运行时动态地为对象添加新的属性。下面是一个例子:

person1 = Person("Alice", 25)

person1.__dict__["gender"] = "female"

print(person1.gender)

运行上面的代码,输出结果为:female。我们可以看到,通过修改__dict__字典来添加新的属性后,我们就可以直接通过属性名访问新添加的属性。

2.2 动态修改属性

通过修改__dict__字典,我们还可以动态地修改对象的属性。下面是一个例子:

person1 = Person("Alice", 25)

person1.__dict__["age"] = 30

print(person1.age)

运行上面的代码,输出结果为:30。我们可以看到,通过修改__dict__字典来修改属性后,我们就可以直接通过属性名访问修改后的属性。

2.3 动态删除属性

使用__dict__,我们还可以在运行时动态地删除对象的属性。下面是一个例子:

person1 = Person("Alice", 25)

del person1.__dict__["age"]

print(person1.__dict__)

运行上面的代码,输出结果为:{'name': 'Alice'}。我们可以看到,通过删除__dict__字典中的键值对,我们可以动态地删除对象的属性。

2.4 命名空间

__dict__属性还可以用来了解对象的命名空间。命名空间是指对象可访问的名称集合。

person1 = Person("Alice", 25)

print(person1.__dict__)

运行上面的代码,输出结果为:{'name': 'Alice', 'age': 25}。我们可以看到,通过查看__dict__属性,我们可以了解到对象的命名空间。

2.5 __dict__和getattr()

除了直接访问__dict__属性,我们还可以使用getattr()函数来获取对象的属性。下面是一个例子:

person1 = Person("Alice", 25)

print(getattr(person1, "name"))

运行上面的代码,输出结果为:Alice。我们可以看到,通过getattr()函数,我们可以获取对象的属性值。

总结:

__dict__属性是一个包含对象属性和值的字典,它允许我们在运行时动态地添加、修改和删除对象的属性。使用__dict__属性,我们可以直接操作对象的属性,而无需使用点运算符。通过查看__dict__属性,我们还可以了解对象的命名空间。

后端开发标签