python可变类型作为默认参数的隐患

class Company:
    # 可变类型的默认参数的隐患
    def __init__(self, name, staffs=[]):
        self.name = name
        self.staffs = staffs


A = Company('tom')
B = Company('jack')
# staffs列表共同指向的是类Company默认的staff的地址
print(id(A.staffs), id(B.staffs))  # 打印的地址一样
class Company:
    def __init__(self, name, staffs=None):
        self.name = name
        if (staffs == None):
            self.staffs = []
        else:
            self.staffs = staffs


A = Company('tom')
B = Company('jack')

print(id(A.staffs), id(B.staffs))  # 2者打印的地址就不一样了

 

posted on 2022-01-11 15:30  Shine-Zhong  阅读(33)  评论(0编辑  收藏  举报

导航