J'essaie d'utiliser des décorateurs de propriétés et d'effectuer des opérations de base tout en obtenant cette erreur ainsi que face à un problème avec deleter et ne pas obtenir la sortie attendue du code.La propriété deleter ne fonctionne pas
class Numbers(object):
Multiplier = 4
def __init__(self, x, y):
self._x = x
self._y = y
def add(self):
return self._x + self._y
@classmethod
def multiply(cls, a):
return a*cls.Multiplier
@staticmethod
def subtract(b,c):
return b-c
@property
def values(self):
return "(%d,%d)" % (self._x, self._y)
@values.setter
def values(self, value1, value2):
self._x = value1
self._y = value2
@values.deleter
def values(self):
print('deleting')
del self._x
del self._y
val = Numbers(2,4)
print(val.values)
print(val._x)
print(val._y)
print(val.multiply(5))
print(val.subtract(8,2))
print(val.add())
val.values = (34,45)
print(val.values)
del (val.values)
print(val.values)
Le problème est avec le setter * *, sûrement? Il devrait prendre un seul argument, le deux-tuple des valeurs x et y. Par exemple. vous pourriez faire le setter 'def values (self, (value1, value2)):', bien que ce ne soit pas compatible avec Python 3.x. Mais notez que vous devriez donner un [mcve], pas seulement * "obtenir une erreur et faire face à un problème" *. – jonrsharpe
Merci pour le conseil. le code édité et a toujours l'erreur "AttributeError: l'objet 'Numbers' n'a pas d'attribut '_x'" @jonrsharpe –
C'est ce qui est censé arriver, qu'attendiez-vous lorsque vous avez accédé à l'attribut après l'avoir explicitement supprimé? – jonrsharpe