gpt4 book ai didi

python - 带有 setter 的自定义属性

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:20 27 4
gpt4 key购买 nike

我正在寻找 property 内置函数的纯 Python 实现,以了解初始化的工作原理。我发现许多处理描述符接口(interface)(__get____set__)但没有描述setterdeleter方法。这是definition吗在Python Decorator Library (大致)它的实现方式?

最佳答案

属性是一个简单、直接的描述符。描述符协议(protocol)由三个方法组成:__get____set____delete__。每个操作的属性仅调用用户提供的函数。

class my_property(object):
def __init__(self, getter, setter, deleter):
self.getter = getter
self.setter = setter
self.deleter = deleter

def __get__(self, instance, owner):
return self.getter(instance)

def __set__(self, instance, value):
self.setter(instance, value)

def __delete__(self, instance):
self.deleter(instance)

class Foo(object):
def __init__(self):
self._x = 42

def get_x(self):
print 'getter'
return self._x

def set_x(self, value):
print 'setter'
self._x = value

def del_x(self):
print 'deleter'
del self._x

x = my_property(get_x, set_x, del_x)

obj = Foo()
print obj.x
obj.x = 69
del obj.x
print obj.x

关于python - 带有 setter 的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905435/

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