[英]Variable who's reference is always to len(dict)
cardPayments={}
rowNumber, NumOfCardPayments = 0, len(cardPayments)
for x in range(5):
cardPayments.update({x:x})
print(cardPayments)
print('cardPayments: '+str(NumOfCardPayments)+'\n')
輸出:
{0: 0}
cardPayments: 0
{0: 0, 1: 1}
cardPayments: 0
{0: 0, 1: 1, 2: 2}
cardPayments: 0
{0: 0, 1: 1, 2: 2, 3: 3}
cardPayments: 0
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
cardPayments: 0
我希望通過將NumOfCardPayments
引用到len(cardPayments)
,隨着cardPayments
dict的大小增加,因此for循環期間NumOfCardPayments
的int值似乎也不是這種情況。
如何創建NumOfCardPayments
作為變量,該變量作為len(cardPayments)
的引用進行維護?
(請注意,我不想在for循環中簡單地執行NumOfCardPayments+=1
)
我想到的最接近的是屬性,它在讀取時會自動評估一個函數:
>>> class LenDict(dict):
... @property
... def len(self):
... return len(self)
...
>>> d=LenDict()
>>> d.len
0
>>> d[1]=2
>>> d.len
1
>>>
但是恕我直言,這並不比直接使用len(d)
更清楚,當然也沒有那么有效。 也可以通過包裹setitem將鈎子反過來放置。
我認為不可能。 在Python中,變量包含指向對象的指針。 整數對象是不可變的。 因此,更改numOfCardPayments值的唯一方法是將其綁定到新對象...
您可以制作一個簡單的lambda對象以返回特定對象的長度
def len_follower(target_object):
return lambda : len(target_object)
然后將參數target_object
設置為cardPayments
>>>cardPayments = {}
>>>NumOfCardPayments = len_follower(cardPayments)
>>>NumOfCardPayments()
0
>>>cardPayments[1] = 0
>>>NumOfCardPayments()
1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.