gpt4 book ai didi

Python-向描述符添加属性

转载 作者:行者123 更新时间:2023-12-01 05:36:05 27 4
gpt4 key购买 nike

我有这个描述符:

# Generic descriptor
class Attribute(object):
def __init__(self, value):
self.value = value
def __get__(self, instance, value):
return self.value
def __set__(self, instance, value):
self.value = value

我会添加一个属性“modified”来检查描述符的实例是否被修改。 es。

# Generic descriptor
class Attribute(object):
def __init__(self, value):
self.value = value
self.modified = False
def __get__(self, instance, value):
return self.value
def __set__(self, instance, value):
self.value = value
self.modified = True

我怎样才能做到这一点?

最佳答案

请注意,在您的 __get____set__ 方法中,您实际上想要访问 instance,而不是 self ( self 是实际的 Attribute 对象)。

这是一种实现方法:

class Attribute(object):
def __init__(self, attr):
self.attr = attr
def __get__(self, instance, owner):
return getattr(instance, self.attr)
def __set__(self, instance, value):
setattr(instance, self.attr, value)
instance.modified = True

class A(object):
def __init__(self):
self._f = 0
self.modified = False
f = Attribute('_f')

a = A()
a.f
=> 0
a.modified
=> False
a.f = 33
a.modified
=> True

当然,可以通过多种方式改进此代码片段,具体取决于您想要实现的目标。

关于Python-向描述符添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19024869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com