@Beginner_Coder

Класс как атрибут класса python, как реализовать?

Учу питон, прохожу тему по ООП, стоит задача передать в качестве атрибута класса другой класс, пытаюсь реализовать как в учебнике, но интерпретатор выдает сообщение об ошибке, не можете подсказать в чем проблема??
class User():
    def __init__(self, first_name, last_name, age):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
    def greeting(self):
        self.long_name = self.first_name + ' ' + self.last_name
        print('Hello, ' + self.long_name.title() + '!')

class Privileges():
    def __init__(self, rules):
        self.rules = ['add user', 'edit user info', 'block user']
    def privilege(self):
        print('Admin can:')
        i = 1
        for name in self.rules:
            print(str(i) + ')' + name.title())
            i += 1

class Admin(User):
    def __init__(self, first_name, last_name, age):
        super().__init__(first_name, last_name, age)
        self.rules = Privileges()
    
new_user = Admin('dan', 'smir', 21)
new_user.privileges.privilege()
new_user.greeting()


Traceback ошибки:
Traceback (most recent call last):
File "C:\Users\user\Desktop\Py crash book\Test\9-1.py", line 28, in
new_user = Admin('dan', 'smir', 25)
File "C:\Users\user\Desktop\Py crash book\Test\9-1.py", line 23, in __init__
self.rules = Privileges()
TypeError: __init__() missing 1 required positional argument: 'rules'
  • Вопрос задан
  • 1527 просмотров
Решения вопроса 1
Djaler
@Djaler
Сеньор-помидор
В конструкторе Admin вы создаёте объект класс Privileges
self.rules = Privileges()
но не передаёте никаких параметров. А у этого класса в конструкторе есть один обязательный параметр (rules), который, правда, никак не используется
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы