Dieser Code erzeugt einen anderen Ausgang in Python 2
und Python 3
.Python-Deskriptoren funktionieren nicht in 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')
Die Ausgabe für Python 2:
read
read
finished
Für Python 3 ist:
read
write
del
read
finished
Warum ist dies so zu arbeiten? Wie unterscheiden sich Python 2
Deskriptoren von Deskriptoren?
Dies auch keinen Sinn macht, weil http://docs.python.org/release/3.0.1/reference/datamodel.html#invoking-descriptors eindeutig genau das gleiche beschreibt wie http://docs.python.org/reference/datamodel.html#invoking-descriptors
(Dies sind die Dokumentationen für Python 2.7
und Python 3.0
.)
(BTW, Python 3.0 und deren Dokumentation sind veraltet und im Ruhestand, haben Python nicht 3.0 oder 3.0.1 verwenden Die aktuellen Dokumente sind unter http:. // docs. Python.org/py3k/ und die aktuelle Version ist 3.2.3.) –