新手求问关于python的oop

class User:
    def __init__(self,first_name,last_name,age,sex):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
        self.sex = sex
        self.login_attempts = 0
    def increment_login_attempts(self):
        self.login_attempts += 1
    def reset_login_attempts(self):
        self.login_attempts = 0
class Admin(User):
    def __init__(self,first_name,last_name,age,sex):
        super().__init__(first_name,last_name,age,sex)
        self.pvs = Pvs()
class Pvs:
    def __init__(self, pvs):
        self.pvs = pvs
    def printout(self):
        print(self.pvs)


admin = Admin("aaa","bbb","43","male")
pvs = ['can add post', 'can delete post', 'can ban user']
admin.pvs.printout()

报错,说:in __init__
    self.pvs = Pvs()
TypeError: __init__() missing 1 required positional argument: 'pvs'

我没理解,哪里缺了啊,不是很全的吗?

看了答案,它是先传了一个空列表。

def __init__(self, privileges=[]):
    self.privileges = privileges

为啥这么做?

class User:
    def __init__(self, first_name, last_name, age, sex):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
        self.sex = sex
        self.login_attempts = 0

    def increment_login_attempts(self):
        self.login_attempts += 1

    def reset_login_attempts(self):
        self.login_attempts = 0

# 子类
class Admin(User):
    def __init__(self, first_name, last_name, age, sex):
        super().__init__(first_name, last_name, age, sex)
        self.pvs = Pvs()


class Pvs:
    def __init__(self):
        self.pvs = ['can add post','can delete post','can ban user']

    def printout(self):
        print(self.pvs)


admin = Admin("aaa", "bbb", "43", "male")
pvs = ['can add post', 'can delete post', 'can ban user']
admin.pvs.printout()