Использование списка с определенным методом класса в Python

#python

#питон

Вопрос:

У меня есть требование ниже, но я получаю некоторую ошибку:

Напишите отдельный класс привилегий. Класс должен иметь один атрибут, привилегии, который хранит список строк.Переместите метод show_privileges() в этот класс. Создайте экземпляр привилегий в качестве атрибута в классе Admin. Создайте новый экземпляр Admin и используйте свой метод, чтобы показать его привилегии.

 class User:
    def __init__(self, first_name, last_name):
        """Initiating attributes of user class"""
        self.first_name = first_name
        self.last_name = last_name
        self.login_attempts = 1

    def describe_user(self):
        """Print summary of the user info"""
        print(f"User's info is {self.first_name}  {self.last_name}")

    def greet_user(self):
        """ Method greets user"""
        print(f"Goodday, {self.first_name} {self.last_name}!")

    def increment_login_attempts(self, login):
        """Method increments login attempts"""
        self.login_attempts  = login
        print(f"This user  has {self.login_attempts} login attempts")

    def reset_login_attempts(self):
        """Method resets login attempts"""
        self.login_attempts = 0

class Privileges:

    def __init__(self, privileges):
        """ Shows admin privileges"""
        self.privileges = privileges

    def show_privileges(self):
        """Lists admin privileges"""
        print(f"This user {','' '.join(self.privileges)}")

class Admin(User):
    """ Represents Admin privileges of a user"""
    def __init__(self, first_name, last_name, privileges):
        super().__init__(first_name, last_name)
        self.privileges = Privileges()


my_Admin_user = Admin('john', 'olode', ["Can Add Post", "Can Delete Post", "Can Ban User"])
my_Admin_user.describe_user()
my_Admin_user.greet_user()
my_Admin_user.Privileges.show_privileges()
 

Ошибка ниже

 Traceback (most recent call last):
  File "userPrivilegeClass.py", line 43, in <module>
    my_Admin_user = Admin('john', 'olode', ["Can Add Post", "Can Delete Post", "Can Ban User"])
  File "userPrivilegeClass.py", line 39, in __init__
    self.privileges = Privileges()
TypeError: __init__() missing 1 required positional argument: 'privileges'
 

Был бы признателен за любую помощь.
К вашему сведению, я очень новичок в python (около месяца), пожалуйста, потерпите, пока вы не заглушите это для меня.. Спасибо

Ответ №1:

Privileges принимает один аргумент ( priveleges ) при создании экземпляра. Вы не указали его в этой строке в своем Admin классе:

 self.privileges = Privileges()
 

Я подозреваю, что вы хотите изменить эту строку на:

 self.privileges = Privileges(privileges)
 

Ответ №2:

Вы действительно закрываете единственное, чего вам не хватает, — это указать Permissions reuqired position arg

 ...
class Admin(User):
    """ Represents Admin privileges of a user"""
    def __init__(self, first_name, last_name, privileges):
        super().__init__(first_name, last_name)
        self.privileges = Privileges(privileges) # Here we pass the privileges to the `__init__` method

...