I am creating decorator to a list to set, get, and delete values. But the deleter
decorator is working. when I call del object[key]
, it doesn't actually do what I expect (print('dellllllll')
).
class ListProperty:
def __init__(self) -> None:
self._l = []
@property
def l(self):
return self._l
@l.setter
def l(self, value):
self._l.append(value)
print('settttttttt')
@l.deleter
def l(self, key):
del self._l[key]
print('dellllllll')
ob = ListProperty()
print(ob.l)
ob.l = 5
print(ob.l)
ob.l = 100
print(ob.l)
del ob.l[0]
print(ob.l)
What am I missing in calling del
you can't pass key on deleter because it expects a argument not a key.
in alternative way you can use this :
class ListProperty:
def __init__(self) -> None:
self._l = []
@property
def l(self):
return self._l
@l.setter
def l(self, value):
self._l.append(value)
print('settttttttt')
@l.deleter
def l(self):
self._l = []
print('deleted all')
def pop(self, index):
self._l.pop(index)
print('dellllllll')
ob = ListProperty()
print(ob.l)
ob.l = 5
print(ob.l)
ob.l = 100
print(ob.l)
ob.pop(0)
print(ob.l)
del ob.l
print(ob.l)