下面是from file import *
情況分配之前引用的類內局部變量
class Person(object):
NumRid = 1
def __init__(self, name, rid = NumRid):
self.name = name
self.rid = rid
NumRid += 1
class Investor(Person):
pass
然後我進入交互式Python會話,和類型,然後 投資者(「鮑勃」) 和它告訴我,局部變量NumRid在賦值之前被引用,位於NumRid += 1
。
據我可以從谷歌搜索可以看出,NumRid應該在類的本地命名空間,並可以從類函數訪問....所以這是怎麼回事?我是否需要宣佈它們都是全球性的;或者是否有一個我能夠鍵入的魔術詞,使它在類命名空間中查找NumRid(如果有的話)?
'UnboundLocal'問題在這裏每週要問兩次,使用搜索和按分數排序應該引導您進行一些詳細解釋(簡而言之:您不能分配給周圍範圍定義的變量,至少不能喜歡這個)。另一件事,但; 'rid = NumRid'不會做你想做的事情,因爲默認參數是在編譯時計算的,因此'rid'總是爲0.只需直接引用類變量並刪除冗餘參數... – l4mpi
那麼,每次創建一個新的投資者時,我都想增加投入,並將其作爲默認值,同時也可以選擇傳遞不同的值:我檢查了行爲,並且似乎將它們全部初始化爲1,這與我理解它,就是你的意思0 – Zach
是的,你說的是正確的,我的評論中的'0'應該是'1'。如果您希望能夠傳入不同的值,請將標記值用作默認值 - 通常您會選擇「無」,除非此值可以是有效值。然後在方法內部測試參數是否是標記,如果是,則取當前的'NumRid',否則取參數值。 – l4mpi