屬性包裝方法是一個很好的功能,在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__',你可以很容易造成內存泄漏。而是使用上下文管理器。 –