qq_31642923
qq_31642923
采纳率0%
2021-03-04 14:18

python中类的复制机制

10
已结题

b是a的拷贝,两个共用一段内存空间,按说应该b为None了 a也应该是None啊

  • 点赞
  • 收藏
  • 复制链接分享

3条回答

  • qq_41500251 垃圾管理员 1月前
    变量不是数据本身,在《Fluent Python》里有这么一段解释:
    
    不要把变量当成存储数据的箱子,而是贴在数据上的标签。
    
    b = None  就是把标签b从Person对象上撕下来,贴到了数据None上面。
    
    这样应该好理解些吧。
    点赞 评论 复制链接分享
  • songhaixing2 给你骨质唱疏松 1月前

    Python中是引用传递的, 我们定义一个变量, 内存中存的是两部分, 第一个部分是 变量名与真实数据的内存地址所对应的关系, 第二个才是真实的数据

    b = a, 正如你所说的拷贝, 但只是在变量名 a 原有对应的内存地址上关联了另一个变量名 b, 后面 b = None, 只是将变量名 b 重新关联了 None, 而 a 还是关联着之前的内存地址

    ...

    点赞 评论 复制链接分享
  • weixin_41830716 规则边缘 1月前

    只能说变量a和变量b指向同一个对象(print的是这个对象的地址,并不是变量本身所在的地址),通过a或者b修改的是同一个对象里的属性。

    但是现在给b赋值为None,只是说b不再指向原来的对象了,但是a还是指向原来的对象。

    点赞 评论 复制链接分享