Re: [問題] 英文實在看不懂,能不能請各位幫忙解釋?

看板Python作者 (笨神)時間8年前 (2016/02/04 02:23), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串3/3 (看更多)
如果你的程式碼是照下面寫的 class Global_State: def __init__(self): initialize_other_library() self.global_mutable_variable = 0xFF 那試試這個單例寫法, 應該能相容 class Global_State: def __init__(self): initialize_other_library() if not hasattr(Global_State, "global_mutable_variable"): Global_State.global_mutable_variable = 0xFF 其它地方存取時記得用Global_State.global_mutable_variable 用Class去存取, 而不是用Instance存取 再看還會不會當 有打錯字就自行修改一下 ※ 引述《ResolaQQ (ResolaQQ)》之銘言: : constants : all module globals are considered constants. Their binding must not be changed : at run-time. Moreover, global (i.e. prebuilt) lists and dictionaries are : supposed to be immutable: modifying e.g. a global list will give inconsistent : results. However, global instances don't have this restriction, so if you need : mutable global state, store it in the attributes of some prebuilt singleton : instance. : 按照上面的說法,我本來以為可以這樣用 : class Global_State: : def __init__(self): : initialize_other_library() : self.global_mutable_variable = 0xFF : global_state = Global_State() : 但是實際上的結果很謎,大概是 : 1. initialize_other_library 這個函式根本沒有被呼叫 : 2. global_mutable_variable 可以使用,而且其值確實一開始為 0xFF : 3. 有時候程式會當掉 : 據推測,我懷疑 __init__ 根本沒有被呼叫,如果在 main 裡面呼叫 __init__ 的話 : 1. initialize_other_library 確實有被呼叫 : 2. global_mutable_variable 可以使用,而且其值確實一開始為 0xFF : 3. 程式不會當掉 : 想請問,按照那段英文,到底允不允許這樣產生一個 module global instance 供使用? : 如果允許,為什麼我要自己呼叫 __init__? : 英文太爛,實在抱歉 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.25.98 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1454523824.A.936.html

02/04 02:48, , 1F
initial_other...如果是一次性的就放入if裡吧
02/04 02:48, 1F

02/04 04:30, , 2F
我在寫RPython,很多語法不能用,像您這個就不行
02/04 04:30, 2F

02/04 04:32, , 3F
目前已經移除所有全域變數,如果再出問題會再來版上詢問
02/04 04:32, 3F
文章代碼(AID): #1MiaMmas (Python)
討論串 (同標題文章)
文章代碼(AID): #1MiaMmas (Python)