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

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

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
18 янв. 2025, в 07:20
50000 руб./за проект
18 янв. 2025, в 03:12
1000 руб./за проект
18 янв. 2025, в 00:01
500 руб./за проект