python中的__dict__属性介绍

  • Post category:Python

Python中的__dict__属性介绍

在Python中,所有的对象都有一个名为__dict__的属性,这个属性用来存储对象的所有属性和方法。我们可以使用这个属性来访问对象的属性和方法,以及动态地为对象添加或删除属性和方法。

访问对象属性

我们可以使用__dict__属性来访问对象的属性。例如,对于一个类Person的实例p,我们可以通过p.__dict__来访问p对象的所有属性:

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

p = Person('John', 20)
print(p.__dict__)

上面的代码会打印输出{'name': 'John', 'age': 20},这个字典中存储了p对象的属性nameage

动态添加属性

我们也可以使用__dict__属性来动态地为对象添加属性。例如,对于一个类Person的实例p,我们可以通过p.__dict__['gender'] = 'Male'来动态地为p对象添加一个gender属性:

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

p = Person('John', 20)
p.__dict__['gender'] = 'Male'
print(p.__dict__)

上面的代码会打印输出{'name': 'John', 'age': 20, 'gender': 'Male'},这个字典中多了一个键值对'gender': 'Male'

动态添加方法

除了可以动态地添加属性,我们也可以使用__dict__属性来动态地为对象添加方法。例如,对于一个类Person的实例p,我们可以通过p.__dict__['hello'] = lambda self: print('Hello!')来动态地为p对象添加一个hello方法:

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

p = Person('John', 20)
p.__dict__['hello'] = lambda self: print('Hello!')
p.hello()  # 输出:Hello!

上面的代码中,我们首先将一个lambda函数赋给了p.__dict__['hello'],这个lambda函数定义了一个hello方法,用来输出Hello!。然后,我们可以通过p.hello()来调用这个新添加的方法。

总结

__dict__属性是Python对象的一个非常有用的特性,可以让我们动态地访问和修改对象的属性和方法。但是,在实际编程中,我们应该尽可能地避免直接使用__dict__属性,而是应该使用对象的正常方式来访问和修改属性和方法。