第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何更改屈服值

如何更改屈服值

qq_笑_17 2021-10-12 10:51:22
以下代碼使用上下文管理器將變量存儲和加載到文件中。但是,必須設(shè)置value上下文管理器 ( loaded.value)所產(chǎn)生內(nèi)容的屬性非常煩人。我想要不必像這樣定義一個新類 LoadedValue將上下文管理器 ( loaded) 的生成值設(shè)置為保存的值。解決這些問題中的任何一個將不勝感激。import osimport picklefrom contextlib import contextmanagerclass LoadedValue:    def __init__(self, value):        self.value = value    def __str__(self):        return "<LoadedValue: {}>".format(self.value)@contextmanagerdef load_manager(load_file="file.pkl"):    with open(load_file, "rb") as f:        loaded_object = LoadedValue(pickle.load(f))    try:        yield loaded_object    finally:        with open(load_file, "wb+") as f:            pickle.dump(loaded_object.value, f)if __name__ == "__main__":    filename = "test.pkl"    with open(filename, "wb+") as f:        pickle.dump(7, f)    with load_manager(filename) as loaded:        print(loaded) # >>> <LoadedValue: 7>        loaded.value = 5 # this is what I have to do        # loaded = 5  # this is what I want to do    with load_manager(filename) as loaded:        print(loaded) # >>> <LoadedValue: 5>注意:這最初是在 CodeReview 上發(fā)布的,但我決定在此處重新發(fā)布以獲取答案,并將其留在 CodeReview 上以幫助以其他方式改進代碼。
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻1895條經(jīng)驗 獲得超7個贊

沒有沒有辦法覆蓋python中的賦值運算符,所以你不能這樣做 loaded = 5

(你可以覆蓋其他東西,所以它可能有點工作)

  • 覆蓋__call__以允許loaded(5)

  • 覆蓋__lshift__以允許loaded << 5

  • 覆蓋__ior__以允許loaded |= 5

(但是要提醒你的同事,否則未來的同事可能永遠不會原諒你)

此外,在with XXXX as Y:塊范圍內(nèi)發(fā)生的事情(通常)不能被產(chǎn)生上下文的方法訪問,除非該范圍以前可以被產(chǎn)生范圍的地方訪問(即全局命名空間等)


查看完整回答
反對 回復 2021-10-12
  • 1 回答
  • 0 關(guān)注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號