wangye666 发表于 2022-12-27 11:43:42

类和对象问题

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是每次实例化都新建的列表

洋洋痒 发表于 2022-12-27 16:30:38

这是个好问题,引人深思

CHNwldcmzy 发表于 2022-12-27 22:26:01


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

# class List(object):
#   def __init__(self):
#         self.list=[]
class List(object):
    def __init__(self,list=[]):
      self.list=list
      print(id(list))
list1=List()
list1.list.append('12')
list2=List()
print(id(list2.list), id(list1.list))
页: [1]
查看完整版本: 类和对象问题