Mã này tạo ra một đầu ra khác nhau trong Python 2
và Python 3
.Mô tả Python không hoạt động trong 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')
Kết quả cho Python 2 là:
read
read
finished
Đối với Python 3 đó là:
read
write
del
read
finished
Tại sao điều này làm việc theo cách này? Các mô tả Python 2
khác với các mô tả Python 3
như thế nào?
này cũng làm cho không có ý nghĩa, bởi vì http://docs.python.org/release/3.0.1/reference/datamodel.html#invoking-descriptors mô tả rõ ràng chính xác giống như http://docs.python.org/reference/datamodel.html#invoking-descriptors
(Đây là những tài liệu cho Python 2.7
và Python 3.0
.)
(BTW, Python 3.0 và tài liệu hướng dẫn của nó là lỗi thời và đã về hưu, không sử dụng Python 3.0 hoặc 3.0.1 Các tài liệu hiện nay tại http:. // docs. python.org/py3k/ và bản phát hành hiện tại là 3.2.3.) –