Python类属性中的"共享列表"陷阱:为什么你的朋友成了别人的朋友?
今天给大家分享一个Python中非常容易踩坑的特性——类属性中默认值为可变对象(比如列表)时的诡异行为。
一个看似简单的例子
我们先看一个简单的Person类定义:
class Person:
def __init__(self, name:str, frients:list=[]):
self.name = name
self.frients = frients
def show_frients(self):
print(f"{self.name}, frients: {self.frients}")
看起来很正常对吧?我们创建一个Person实例时,如果没有提供frients参数,就会默认使用空列表。