gpt4 book ai didi

python - 将 __del__ 与适当的属性方法一起使用

转载 作者:太空狗 更新时间:2023-10-30 02:38:38 25 4
gpt4 key购买 nike

Property wrapper methods 是 python 中的一个很好的特性,这个问题不是这个问题的主题,我需要知道是否可以将它与 python destructor __del__ 一起使用,一个实用的示例可以是数据库连接,为了简化起见,假设我们有以下类:

class Point(object):
"""docstring for Point"""

def __init__(self, x, y):
self.x = x
self.y = y

@property
def x(self):
print('x getter got called')
return self._x

@x.setter
def x(self, x):
print('x setter got called')
self._x = x

def __str__(self):
return '[%s:%s]' % (self.x, self.y)

def __del__(self):
print('destructor got called')
del self.x
del self.y

作为测试用例,假设我们有:

a = Point(4, 5)
del a

输出是:

Exception AttributeError: "can't delete attribute" in <bound method Point.__del__ of <__main__.Point object at 0x7f8bcc7e5e10>> ignored

如果我们删除属性部分,一切都会顺利进行。有人可以指出问题出在哪里吗?

最佳答案

将删除器添加到您的属性 x 以进行清理。默认情况下,如果没有为属性定义 fdelthe AttributeError you see提出:

@x.deleter
def x(self):
print("x deleter got called")
del self._x

关于python - 将 __del__ 与适当的属性方法一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409212/

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