我是一个完全的 Python 新手,所以我的问题可能看起来很愚蠢。我看到在 Python 中有两种为对象属性赋值的方法:
使用__dict__:
class A(object):
def __init__(self,a,b):
self.__dict__['a'] = a
self.__dict__['b'] = b
没有__dict__:
class A(object):
def __init__(self,a,b):
self.a = a
self.b = b
谁能解释一下区别在哪里?
请您参考如下方法:
除非你需要动态设置属性并绕过descriptors或 .__setattr__() hook , 不要将属性直接分配给 .__dict__。
甚至不是所有的实例都有.__dict__ 属性,如果类定义了一个.__slots__ attribute以节省内存。
如果您确实需要动态设置属性但不需要绕过描述符或 .__setattr__() Hook ,您可以使用 setattr() function通常。
