属性包装方法是一个很好的功能,在Python中,这个问题不是这样的问题的主题,我需要知道是否有可能使用它与蟒蛇析构函数__del__
,一个实用例如可以是一个数据库连接,为了简化的目的,让我们说我们有下面的类:使用具有属性方法的__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
如果我们删除了属性部分,一切顺利。 有人可以显示问题在哪里?
你想'德尔self._x' – salparadise
这工作完全正常,你有什么想法,有什么更好的使用处理对象解构@ x.deleter或处理__del__方法内所有对象属性的所有解构,第二个选项是我们写的代码较少。 –
@ponach一般来说,你应该避免为此使用'__del__',你可以很容易造成内存泄漏。而是使用上下文管理器。 –