Este código produce una salida diferente en Python 2
y Python 3
.Las descripciones de Python no funcionan en Python 2.7
class Descriptor(object):
def __get__(self, instance, owner):
print('read')
return 1
def __set__(self, instance, value):
print('write')
def __delete__(self, instance):
print('del')
class C():
a = Descriptor()
c = C()
c.a
c.a = 3
del c.a
c.a
print('finished')
La salida para Python 2 es:
read
read
finished
Para Python 3 es:
read
write
del
read
finished
¿Por qué esta trabajando de esta manera? ¿En qué se diferencian las descripciones Python 2
de los descriptores Python 3
?
Esto hace que también no tiene sentido, porque http://docs.python.org/release/3.0.1/reference/datamodel.html#invoking-descriptors describe con claridad exactamente lo mismo que http://docs.python.org/reference/datamodel.html#invoking-descriptors
(Estas son las documentaciones para Python 2.7
y Python 3.0
.)
(Por cierto, Python 3.0 y su documentación son obsoletas y se retiró, no utilizar Python 3.0 o 3.0.1 La documentación actuales se encuentran en http:. // docs. python.org/py3k/ y la versión actual es 3.2.3.) –