self.__dict__
时间: 2024-09-27 14:15:39 浏览: 33
`self.__dict__` 是Python中的一个特殊机制,它允许你在类实例中存储任意键值对,这些键值对被称为"成员变量"(instance variables)。当创建一个新的类实例时,它会自动创建一个与该实例关联的`__dict__`,这个`__dict__`包含了属于该实例的所有非私有属性。
**1. 示例演示:**
在Python类中,当我们调用 `self.__dict__` 或直接访问`__dict__.update()` 方法时,实际上是在操作一个字典,可以用来存储自定义的属性:
```python
class Person:
def __init__(self, name):
self.__name = "John Doe" # 私有属性,不能直接通过实例访问
self._age = 30 # 双下划线开头表示保护属性,一般不建议直接修改
self.__dict__["address"] = "New York" # 自定义成员变量
# 创建实例并访问__dict__
p = Person("Alice")
print(p.__dict__) # {'address': 'New York'}
# 修改__dict__中的值
p.__dict__["age"] = 25
print(p.__dict__) # {'age': 25, 'address': 'New York'}
```
**2. 关于继承:**
正如引用[2]所说,每个类都有自己的`__dict__`属性,即使它们之间存在继承关系。这意味着子类的`__dict__`不会受到父类的影响,除非显式地从父类`__dict__`复制属性:
```python
class Parent:
parent_prop = "Parent Property"
class Child(Parent):
child_prop = "Child Property"
child_instance = Child()
# 子类的__dict__包含其自身和继承的属性
print(child_instance.__dict__) # {'parent_prop': 'Parent Property', 'child_prop': 'Child Property'}
# 如果我们想添加到父类的__dict__,需要手动操作
parent_dict = child_instance.__class__.__dict__
parent_dict["added_from_parent"] = "From Parent"
print(parent_dict) # {'parent_prop': 'Parent Property', 'child_prop': 'Child Property', 'added_from_parent': 'From Parent'}
```
阅读全文