|
|
|||||||||||
Наследовать атрибут30.10.2021, 12:07. Показов 7601. Ответов 76
Добрый день!
Подскажите как наследовать атрибуты из родительских классов?
AttributeError: 'C' object has no attribute 'x' Почему в классе C не видно переменной x ? Спасибо! Добавлено через 13 минут Мне нужно в классах A и B определить переменные (атрибуты) x и y и выполнить с ними действия в методе класса C Добавлено через 5 минут Это правильное решение?
0
|
|||||||||||
| 30.10.2021, 12:07 | |
|
Ответы с готовыми решениями:
76
Как наследовать метод класса, который вызвает функцию класса из которого мы его наследуем? |
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 30.10.2021, 20:35 | |
|
0
|
|
|
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,313
|
||||||||
| 30.10.2021, 21:08 | ||||||||
Добавлено через 4 минуты я считал что метод __init__ вызывается при создании экземпляра класса но так как в потомке мы не создаем экземпляр то __init__ родителя нужно вызывать явно через super. что то я кажется пропустил это у лутца.
0
|
||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||
| 30.10.2021, 21:22 | ||
|
Semen-Semenich, тут у тебя множественное наследование. Я в этой кухне не шарю
![]() Добавлено через 2 минуты Добавлено через 3 минуты Не по теме: Ну вы подзапарили на ночь глядя )))
0
|
||
|
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,313
|
|
| 31.10.2021, 09:54 | |
|
да тут еще курить и курить мануалы нужно. Python - о множественном наследовании
0
|
|
| 31.10.2021, 10:29 | |||||||||||
|
iSmokeJC, Semen-Semenich, Спасибо вам, благодаря дискуссии с Вами, я понял разницу между наследованием и прямым вызовом атрибутов.
Лутц ввел меня в заблуждение, используя прямой вызов атрибутов в дереве наследования. ![]() Кликните здесь для просмотра всего текста
И вот еще выдержка из этой книги: Как насчет super? Цитата из Лутц М. Изучаем Python (том 2, 5-е издание, 2019) стр. 69 : Кликните здесь для просмотра всего текста
Резюмирую: В ООП нужно четко понимать разницу между механизмом наследования и прямым вызовом атрибутов.
2
|
|||||||||||
|
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,313
|
|
| 31.10.2021, 10:39 | |
|
Не по теме: век живи, век учись, - сказал ёжик, слезая с кактуса
0
|
|
| 31.10.2021, 11:53 | |||||||||||||||||||||
|
Мой первый сегодняшний комментарий, поясняющий разницу между механизмом наследования и прямым вызовом, почему то затерялся. Поэтому повторю его еще раз, благо я его сохранил в текстовом редакторе.
iSmokeJC, На свежую голову поясню свои ошибки. У меня вчера почему то замкнуло, что вызов метода из суперкласса, это почему то не наследование. На самом деле это может не быть наследованием, а может и быть наследованием. Наследование, это не то, что мы можем вызвать, а механизм, который работает при поиске объекта, который вызывается. Сейчас попробую объяснить, что я имею ввиду. Особенность ООП состоит в том, что мы можем обратится к любому классу и к любому объекту в этом классе напрямую, не зависимо от того, принадлежат ли вызывающий класс и вызываемый класс одному дереву наследования. Пример. Кликните здесь для просмотра всего текста
А теперь получим тот же результат, используя механизм наследования в дереве наследования. Кликните здесь для просмотра всего текста
Но возможен и третий вариант, когда используются одновременно и механизм наследования и прямое обращение к объекту. Кликните здесь для просмотра всего текста
Однако тот же результат мы получим, используя смешивание наследования и прямого вызова в трех классах связанных деревом наследования. Кликните здесь для просмотра всего текста
Добавлено через 1 час 2 минуты Я о чем еще подумал. Видимо питон не может правильно осуществить механизм наследования при множественном наследовании. И поэтому модель множественного наследования нужно создавать смешивая встроенный механизм наследования и моделируя наследование из другой ветки с помощью прямого вызова конструкторов, обращаясь к ним, как к квалифицированным переменным, с явным указанием класса и конструктора в нем и размещая это в конструкторе вызывающего класса. Что бы можно было наследовать атрибуты из того класса, создавая их аналог в подклассе. По моему как то так. Попрактикуемся со множественным наследованием, тогда разберемся.
0
|
|||||||||||||||||||||
|
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|||||||
| 31.10.2021, 13:23 | |||||||
0
|
|||||||
|
|
||||||
| 31.10.2021, 15:21 [ТС] | ||||||
|
Дико извиняюсь, что вмешиваюсь в разговор
![]() А если вот такая ситуация: 1) в классе А создается переменная; 2) в классе B ей присваивается новое значение; 3) значение передается в класс C Вот с третьим шагом, что-то у меня не получается
0
|
||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||||||
| 31.10.2021, 15:28 | ||||||
Сообщение было отмечено VistaSV30 как решение
Решение
1
|
||||||
| 31.10.2021, 16:36 | |||||||||||
|
Arsegg, Где Вы взяли этот прикольный код? Открывается необычный механизм работы инструкции super.
Посмотрел в пошаговом режиме работу этого кода. Оказывается инструкция
Получается, что при таком синтаксисе, super вызывает конструкторы из всех суперклассов при множественном наследовании, которые указаны в шапке подкласса . И так как super вызывается в конструкторе, то таким способом наследуются атрибуты из всех конструкторов суперклассов этого класса при множественном наследовании. Отличный код для множественного наследования. Нужно его сохранить. ![]() Вот только в этом коде лишний super в классе В. И без него все нормально работает. Этот super был бы нужен, только если бы у класса В был свой суперкласс (или несколько суперклассов).
0
|
|||||||||||
|
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|
| 31.10.2021, 16:42 | |
|
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 31.10.2021, 16:46 | |
|
1
|
|
|
|
||||||
| 31.10.2021, 17:05 [ТС] | ||||||
|
У меня опять вопрос
Как из родительского класса передать значение в дочерние?
0
|
||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 31.10.2021, 17:10 | |
|
0
|
|
|
|
|
| 31.10.2021, 17:20 [ТС] | |
|
В родительском классе вводится значение функцией AA() и затем это значение нужно передать в дочерние классы.
В моем коде наследуется начальное значение 10, а то что вводится функцией не передается (не наследуется)
0
|
|
| 31.10.2021, 17:35 | ||
|
Куда Вы хотите передать атрибут "а" класса А, в конструктор подкласса В или в метод ВВ класса В ? Можно передавать прямым обращением к атрибуту "а" экземпляра класса А, или может быть через super. Но с super я плотно не работал, поэтому нужно пробовать. Кстати не стоит давать одинаковые названия атрибуту и экземпляру класса, так как можно запутаться.
0
|
||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||||||
| 31.10.2021, 17:37 | ||||||
|
Бррррр.
VistaSV30, ты создал ОДИН экземпляр класса А и у него изменил поле а. Потом ты создал ДРУГОЙ экземпляр - класса Б. Там ничего не менял. Потом ты создал ТРЕТИЙ экземпляр класса С, в котором также ничего не менял. Добавлено через 58 секунд VistaSV30, вот так запусти и будет счастье
0
|
||||||
| 31.10.2021, 17:37 | |
|
Как использовать один атрибут в другом классе?
Как наследовать класс и сделать вывод? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|