#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. Хороший ответ должен не просто указывать на ошибку, он должен объяснять, как ее исправить.