鱼C论坛

 找回密码
 立即注册
查看: 3741|回复: 3

[已解决]类和对象问题

[复制链接]
发表于 2022-12-27 11:43:42 | 显示全部楼层 |阅读模式
3鱼币
1、class List(object):
    def __init__(self):
        self.list=[]
2、class List(object):
    def __init__(self,list=[]):
        self.list=list
list 1=List()
list 1.list.append('12')
list 2=List()
print(list 2.list)
为什么同样是在__init__后,第一个打印的list 2是[],第二个打印的list 2是['12']?
最佳答案
2022-12-27 11:43:43
2是共用一个列表
1是每次实例化都新建的列表

最佳答案

查看完整内容

2是共用一个列表 1是每次实例化都新建的列表
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-27 11:43:43 | 显示全部楼层    本楼为最佳答案   
2是共用一个列表
1是每次实例化都新建的列表
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-27 16:30:38 | 显示全部楼层
这是个好问题,引人深思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-27 22:26:01 | 显示全部楼层

1输出的是两个不同的值,2的两个输出值以及形参默认值的id都是相同的,应该list1.list和list2.list都是那个形参默认值[]的索引

  1. # class List(object):
  2. #     def __init__(self):
  3. #         self.list=[]
  4. class List(object):
  5.     def __init__(self,list=[]):
  6.         self.list=list
  7.         print(id(list))
  8. list1=List()
  9. list1.list.append('12')
  10. list2=List()
  11. print(id(list2.list), id(list1.list))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 06:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表