J'ai utilisé Python 2.5, je veux savoir comment peut changer le code suivant lorsque la plate-forme est python2.5 ou python2.6pourquoi mon code fonctionne mal, il est sur le point « @property »
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
a=C()
print a.x#error
merci
merci, alex, je pense que la propriété doit être 3 arguments dans votre exemple
mais, je l'ai vu un code qui, avec la 'propriété' utiliser seulement 1 argumennt, pourquoi, peut-il travailler
class SortingMiddleware(object):
def process_request(self, request):
request.__class__.field = property(get_field)
request.__class__.direction = property(get_direction)
merci, alex, je pense que la propriété doit être 3 arguments dans votre exemple mais, j'ai vu un code qui, avec 'property' utilise seulement 1 argumennt, pourquoi, peut-il fonctionner – zjm1126
'property' dans 2.5 peut être appelé avec un seul argument (ou, de manière équivalente, comme décorateur) quand vous voulez que la propriété soit en lecture seule (seulement un getter: pas de setter, pas de deleter). –
La fonction 'property' a 4 arguments (getter, setter et deleter et documentation). Le dernier paramètre n'est pas vraiment pertinent pour cette discussion, donc nous l'ignorerons. Les trois autres par défaut à None, ce qui signifie que la propriété ne peut pas être "gotten", "set" ou "deleted". (si un paramètre est None, cette action est considérée comme non faisable). Lorsque vous l'appelez avec un seul argument, seule la méthode "getter" (c'est-à-dire le premier paramètre) est spécifiée pour devenir un attribut "lecture seule" et les deux autres opérations (set et delete) sont interdites. –