python 中的__dict__属性讲解
时间: 2023-10-30 21:07:56 浏览: 60
在 Python 中,每个对象都有一个 __dict__ 属性,它是一个字典,包含了对象的所有属性和方法。这个字典可以通过对象的 __dict__ 属性访问。
例如,如果我们有一个类 MyClass,它有一个属性 x 和一个方法 foo,那么 MyClass 的实例对象 obj 的 __dict__ 属性将包含 {'x': value, 'foo': <function foo at 0x000001>}。
我们可以通过 obj.__dict__['x'] 或者 obj.__dict__['foo'] 来访问这些属性和方法。
__dict__ 属性也可以用来动态添加或删除对象的属性和方法。例如,我们可以通过 obj.__dict__['y'] = 10 来添加一个新的属性 y。
需要注意的是,对于一些内置类型(如 int,str 等),它们的 __dict__ 属性是不存在的,因为它们是不可变的。同时,对于一些内置类型的实例(如列表、字典等),它们的 __dict__ 属性也是不存在的,因为它们的属性和方法是通过类的 __dict__ 属性来访问的。
相关问题
python中__dict__
__dict__是Python中的一个特殊属性,它是一个字典(dictionary),用于存储对象的属性和方法。每个对象都有一个__dict__属性,它记录了对象的所有属性和方法,并以键值对的形式存储。
当我们通过点运算符(.)或getattr()函数访问对象的属性时,实际上是在__dict__字典中查找对应的键值对。如果找到了对应的键,就返回相应的值;如果没有找到,会引发AttributeError异常。
下面是一个简单的例子,说明了__dict__的用法:
```python
class MyClass:
def __init__(self):
self.name = "John"
self.age = 25
obj = MyClass()
print(obj.__dict__) # {'name': 'John', 'age': 25}
print(obj.name) # John
print(obj.__dict__["age"]) # 25
```
在上面的例子中,我们创建了一个名为MyClass的类,并在其构造函数中初始化了两个属性name和age。创建了一个obj对象后,我们可以通过obj.__dict__访问到对象的属性字典,也可以通过obj.name或者obj.__dict__["age"]直接访问属性的值。
需要注意的是,__dict__只能访问到实例属性和方法,而不能访问到类属性和方法。类属性和方法存储在类的__dict__属性中。
python __dict
在Python中,每个对象都有一个特殊的属性`__dict__`,它是一个字典(dictionary)类型,用于存储对象的属性和方法。这个字典包含了对象的所有实例变量和方法,以及它们对应的值。
当我们创建一个对象时,Python会自动为该对象分配一个`__dict__`属性,并将对象的属性和方法存储在这个字典中。我们可以通过访问`__dict__`属性来查看对象的属性和方法。
下面是一个简单的示例:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is", self.name)
# 创建一个Person对象
person = Person("Alice", 25)
# 访问对象的__dict__属性
print(person.__dict__)
```
输出结果为:
```
{'name': 'Alice', 'age': 25}
```
可以看到,`person.__dict__`返回了一个字典,其中包含了对象的实例变量`name`和`age`以及方法`say_hello`。
需要注意的是,`__dict__`属性只能访问对象的实例变量和方法,而不能访问类变量和类方法。如果想要访问类的属性和方法,可以通过类本身的`__dict__`属性来实现。