Начинающий Python, попробуй выучить

#python

#python

Вопрос:

Я пытаюсь выяснить, почему у меня ошибка

 <TypeError: __init__() missing 1 required positional argument: 'privileges'>
  

#9-7

 class User:
    def __init__(self, first_name, last_name, age, weight, race):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
        self.weight = weight
        self.race = race
        self.login = 0

    def describe_user(self):
        print("The following infoation is about this user")
        print(f"t{self.first_name}")
        print(f"t{self.last_name}")
        print(f"t{self.age} years old")
        print(f"t{self.weight} lbs")
        print(f"t{self.race}")

    def greet_user(self):
        full_name = f"{self.first_name} {self.last_name}"
        print(f"Nice to meet you {full_name}")

    def login_attempts(self):
        """Print a statement and show the current attempts"""
        print(f"Current login attempt {self.login}")

    def increment_login_attempts(self):
        """Increase login attempt by 1 everytime"""
        self.login  = 1

    def reset_login_attempts(self):
        """Resrt the value"""
        self.login = 0


class Privileges:
    def __init__(self, privileges):
        """Initilize attributes to the class"""
        self.privileges = ['can add post', 'can delete post', 'can ban user']   
             
    def show_privileges(self):
        """Show the current priviledges list"""
        print(self.privileges)


class Admin(User):
    def __init__(self, first_name, last_name, age, weight, race):
        """
        Initialize attributes of the parent class.
        Then initizalize attributes specific to an electric car. 
        """
        super().__init__(first_name, last_name, age, weight, race)
        self.privileges = Privileges()


    # def add_privileges(self, privileges):
    #     """Add privileges to the list"""
    #     for privilege in privileges:
    #         self.privileges.append(privilege)


user_01 = Admin('Edward', 'Li', 18, 150, 'Asian')
user_01.privileges.show_privileges()
  

Комментарии:

1. Пожалуйста, включите полное сообщение об ошибке.

2. Почему ваш Privileges.__init__ метод принимает privileges аргумент, который он никогда не использует?

Ответ №1:

Privileges требуется privileges при инициализации, исходя из вашего определения:

def __init__(self, privileges): . Я понимаю, что на самом деле вы все равно присваиваете значение privileges . Так что придется:

 class Privileges:
    def __init__(self):
  

Вместо этого.

Ответ №2:

Ваш метод Privileges class __init__ принимает аргумент, но когда вы инициализируете его здесь:

 self.privileges = Privileges()
  

Вы не приводите аргументов. Я полагаю, именно поэтому вы получаете ошибку.

Итак, либо а) удалите параметр, ЛИБО б) укажите что-нибудь для параметра

Комментарии:

1. На самом деле он не использует параметр. Так что, возможно, ошибка в том, что для этого в первую очередь требуется аргумент.

2. @Barmar да, удаление параметра было бы одним из исправлений, я просто указывал, откуда эта ошибка

3. Хороший ответ должен не просто указывать на ошибку, он должен объяснять, как ее исправить.