91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python的類成員變量默認初始值的坑

發布時間:2020-08-07 23:51:21 來源:網絡 閱讀:6146 作者:zzx90 欄目:編程語言

問題發現:一個循環內,缺省值初始化同名變量,其中的list成員不是空,會延續之前同名變量的值。


示例代碼:

# Define class
class Variant():
    # use
    def __init__(self, price = 500, description = 'default description', values = ['', '', '']):
        self.price = price
        self.description = description
        self.values = values

    def __str__(self):
        return 'price: {}, description: {}, values: {}'.format(self.price, self.description, self.values)

variant_list = []
# Create instance with same name iteratively
for i in range(3):
    current_variant = Variant()
    if i == 1:
        current_variant.values[2] = 'hello'
    current_variant.price = i
    current_variant.description = 'description of variant: {}'.format(i)
    variant_list.append(current_variant)

# Test results
for variant in variant_list:
    print(str(variant))

結果:所有實例的values列表值相同


原因:“可選參數默認值的設置在Python中只會被執行一次,也就是定義該函數的時候”如此使用缺省值初始化,list成員指向的是同一個list(地址),如果只是修改其中一個元素(而不是賦值新的list開辟新內存),那么所有instance的list成員都會被修改。


解決方法:直接在構造方法中置為空(self.values = ['', '', '']),之后各個修改值


reference:Python 類成員變量使用缺省值初始化時要注意的一個坑
Python程序員最常犯的十個錯誤

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定州市| 安岳县| 剑河县| 松阳县| 林周县| 奉贤区| 依兰县| 平顶山市| 长汀县| 布尔津县| 库车县| 西华县| 扶余县| 汉源县| 霸州市| 临朐县| 双柏县| 上虞市| 抚远县| 水城县| 图木舒克市| 平塘县| 大理市| 马关县| 汝城县| 万安县| 砀山县| 嘉善县| 克山县| 富源县| 南汇区| 清原| 莒南县| 辛集市| 墨竹工卡县| 青铜峡市| 禄丰县| 北安市| 泸水县| 凌源市| 郁南县|