python 类 __dict__ 在赋值时的使用

本文通过一个Python类实例的示例,展示了如何利用字典更新的方法动态地为类实例添加新属性并修改已有属性的值。这种方法避免了直接替换整个实例属性字典可能带来的属性丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

举个栗子:

class test1(object):

    def __init__(self):

        self.a = 1
        self.b = 2

test1 是个简单的类,我们先初始化这个类,然后用一个字典给类的实例赋值,会发现一些有趣的地方


In [12]: x.__dict__
Out[12]: {'a': 1, 'b': 2}

In [13]: x.__dict__ = {'a':3, 'c':4}

In [14]: x
Out[14]: <__main__.test1 at 0xaf29080>

In [15]: x.__dict__
Out[15]: {'a': 3, 'c': 4}

In [16]: x.c
Out[16]: 4

In [17]: x.__dict__ = {'a':3, 'c':4, 'b':5}

In [18]: x.__dict__
Out[18]: {'a': 3, 'b': 5, 'c': 4}

从 In[13] 可以发现原来类的属性里面没有定义 self.c , 但是经过赋值,实例 x 就有了 x.c 属性, 但是 x.b 却消失了。从接下来的 [17], [18] 可以看出来 实例的属性会被重新赋值,而且部分属性会被删除,这取决于等号后面的 dict 有哪些 key.

如果我们只是想增添实例的属性,并且改变某些已有的属性,那么可以使用 字典的 update 函数来实现
x.__dict__.update({'a':3, 'c':4})

这样如果实例本身就有 x.a 属性,那么 x.a = 3 x.c = 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值