[英]Attempting to create a read-only property attribute - getter returns initialized value, direct access returns changed value
[英]Getter method vs read-only property
已經有一個類似的問題“何時以及如何在python中使用內置函數屬性()” ,但我認為這是一個不同的問題。
我有一個類需要一個方法來獲得一些工作進度的計數器:
class Downloader():
def __init__(self, max_workers):
self.executor = ThreadPoolExecutor(max_workers)
@property
def unfinished_tasks_count(self):
return self.executor._work_queue.unfinished_tasks
我認為最好這樣做:
class Downloader():
...
def get_unfinished_tasks_count(self):
return self.executor._work_queue.unfinished_tasks
因為當它查看接口的屬性時(不查看文檔和/或源代碼),它不是顯式的,它是一個只讀的計算屬性。 當它是一個方法時,很明顯它只是一個計算值的getter,它不是一個可以由API客戶端設置的簡單屬性。
所以我的問題是:何時使用getter方法vs只讀屬性?
物業的使用應該符合您的意圖,並為您的同行提供合理的期望。
何時不使用財產:
何時使用屬性:
像往常一樣,這些問題的答案取決於品味,並且沒有硬性規則。 在許多情況下,這些指南可能對您有用,但它們不會消除應用常識的需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.