Задать вопрос
@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'
  • Вопрос задан
  • 1606 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
Решения вопроса 1
Djaler
@Djaler
Сеньор-помидор
В конструкторе Admin вы создаёте объект класс Privileges
self.rules = Privileges()
но не передаёте никаких параметров. А у этого класса в конструкторе есть один обязательный параметр (rules), который, правда, никак не используется
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
от 100 000 до 150 000 ₽
Hard Bootstrapping LLC. Санкт-Петербург
от 250 000 до 500 000 ₽
ITK academy Воронеж
от 75 000 ₽