在这段Python代码中_usetattr_uu的含义是什么?
我想知道uuuSetAttr_uuuuuuuuuuu魔法函数和self之间的区别。在这段Python代码中_usetattr_uu的含义是什么?,python,Python,我想知道uuuSetAttr_uuuuuuuuuuu魔法函数和self之间的区别。 现在我在这里添加了更多的代码。在构造函数中,它是object.setattr。那么被覆盖的代码对它有什么影响呢?与几乎所有的类一样,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果不需要更改x.foo的语义,则可能不存在setattr。x、 foo被定义为_usetattr__;
现在我在这里添加了更多的代码。在构造函数中,它是object.setattr。那么被覆盖的代码对它有什么影响呢?与几乎所有的类一样,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果不需要更改x.foo的语义,则可能不存在setattr。x、 foo被定义为_usetattr__; on self;所以它可以做任何事情,比如像Django那样设置DB字段
但是请注意,问题中的代码调用object.\uuuuSetAttr\uuuuuuuuuuu,而不是self上的代码。因此,即使当前类重写_usetattr_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。设置属性。这是整个类吗?它正在调用object.\uuuuSetAttr\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?否则,我很确定这两个版本都相当于避免对象的版本。uuu setattr_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。通常不需要为uuu init_uuuu.@ShadowRanger fat finger:。在构造函数中,它是object.setattr。那么覆盖对它有影响吗?
class Local(object):
__slots__ = ('__storage__', '__ident_func__')
def __init__(self):
object.__setattr__(self, '__storage__', {})
object.__setattr__(self, '__ident_func__', get_ident)
def __call__(self, proxy):
"""Create a proxy for a name."""
return LocalProxy(self, proxy)
def __getattr__(self, name):
try:
return self.__storage__[self.__ident_func__()][name]
except KeyError:
raise AttributeError(name)
def __setattr__(self, name, value):
ident = self.__ident_func__()
storage = self.__storage__
try:
storage[ident][name] = value
except KeyError:
storage[ident] = {name: value}
def __delattr__(self, name):
try:
del self.__storage__[self.__ident_func__()][name]
except KeyError:
raise AttributeError(name)