class Books():
def __init__(self):
self.__dict__['referTable'] = 1
@property
def referTable(self):
return 2
book = Books()
print(book.referTable)
print(book.__dict__['referTable'])
Chạy:Phiên bản phi dữ liệu được tích hợp sẵn?
[email protected]:~/Desktop$ python3 test.py
2
1
Books.referTable
being a data descriptor không bị che bởi book.__dict__['referTable']
:
Chức năng
property()
được thực hiện như một mô tả dữ liệu. Theo đó, các trường hợp không thể ghi đè hành vi của thuộc tính.
Để tô bóng nó, thay vì property
bộ mô tả tích hợp, tôi phải sử dụng trình mô tả của riêng mình. Có một bộ mô tả tích hợp như property
nhưng không phải là dữ liệu không?
Bạn đang cố gắng làm gì ở đây? Những gì bạn đang cố gắng để đạt được điều đó không thể đạt được bằng cách thay đổi cách mà hàm bạn đang sử dụng '' @ property'' trên các hàm? –
@Lattyware, tôi đang cố tạo một bộ mô tả lười biếng. Đôi khi tôi muốn 'referTable' được đặt trong' __init__'. Trong các trường hợp khác, tôi muốn bộ mô tả tính toán giá trị và ghi đè lên bộ mô tả giống như cách nó được thực hiện trong '__init__'. Ở đây (http://blog.pythonisito.com/2008/08/lazy-descriptors.html) nó được tạo ra một bộ mô tả riêng biệt cho điều đó, điều này sẽ làm việc cho tôi. Trong trường hợp của tôi, tôi muốn đơn giản hóa nó, sử dụng nếu có thể một bộ mô tả dựng sẵn và 'thuộc tính' không hoạt động đối với tôi. – warvariuc
'Đơn giản hóa'? Bạn có thể làm rõ những gì bạn muốn đơn giản hóa? Tại sao ví dụ bạn liên kết không hoạt động cho bạn? –