python的类定义的属性如果是列表为什么要预先赋值一个空列表

class Privileges():
	def __init__(self,privileges=[]):
		self.privileges=['can add post','can delete post','can ban users']
	def show_privileges(self):
		for privilege in self.privileges:
			print(" --"+privilege)
			
admin=Admin('bruce','lee')
admin.privileges.show_privileges()

请问为什么第二行的privileges后面要预先赋值一个空列表呢?否则就会报错。

class Privileges():
    def __init__(self,privileges):
        self.privileges = privileges
    def show_privileges(self):
        for privilege in self.privileges:
            print("Admin" + privilege)
admin = Privileges([' can add post',' can delete post',' can ban user'])
admin.show_privileges()

我知道赋予空列表是给一个默认值,但如果是上面这样编写,那第二行的privilegs为什么就不用预先赋予一个空列表呢?

首先图一的admin不太清楚是哪里来的,其次我将你说的privileges去掉默认的[],运行后并没有报错,看起来是你admin的问题吗?