0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 6
|
|||||||||||
1 | |||||||||||
Не могу передать параметр в родительский конструктор при создании экземпляра класса21.05.2019, 15:56. Показов 8770. Ответов 7
Метки python 3.5 (Все метки)
Хочу создать экземпляр класса Human, и передать в конструктор его родительского класса параметр size . Для этого вызываю в классе Human родительский __init__() с помощью super() .Почему это не работает?
0
|
21.05.2019, 15:56 | |
Ответы с готовыми решениями:
7
При создании экземпляра класса, создается 2 экземпляра вместо 1 Как при создании экземпляра класса инициализировать переменные вложенного класса Что происходит с методами класса при создании экземпляра класса ? Память для каждого метода также отводится ? Ошибка при создании экземпляра класса |
21.05.2019, 18:20 | 2 |
Используйте теги оформления кода.
Очевидно, потому что вы туда size не передаёте. Рискну предположить, что вы ожидаете, что size передастся в Ape вот в этом вызове: Таки нет, автоматически этого не происходит.
0
|
5041 / 3387 / 1155
Регистрация: 21.03.2016
Сообщений: 8,209
|
||||||
21.05.2019, 20:47 | 3 | |||||
0
|
33 / 30 / 16
Регистрация: 21.01.2014
Сообщений: 101
|
||||||
21.05.2019, 20:53 | 4 | |||||
Надо явно передавать параметр в "конструктор" родителя:
0
|
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 6
|
|||||||||||||||||||||
22.05.2019, 10:00 [ТС] | 5 | ||||||||||||||||||||
Смысл в том что тут у вас в "def __init__(self, name=None, size=None)" есть принимаемый аргумент "size=None", и при создании экземпляра класса Human и при передаче в него аргумента для size будет вызываться __init__() класса Human, а мне нужно чтобы вызывался __init__() класса Ape.
Добавлено через 37 секунд Смысл в том что тут у вас в "def __init__(self, name=None, size=None)" есть принимаемый аргумент "size=None", и при создании экземпляра класса Human и при передаче в него аргумента для size будет вызываться __init__() класса Human, а мне нужно чтобы вызывался __init__() класса Ape. Добавлено через 2 минуты
Добавлено через 15 минут Возможно не понятно то что я хочу сделать. Есть два класса, родитель Ape и наследник Human, и у того и у другого есть свои __init__() :
0
|
22.05.2019, 10:01 | 6 |
Вы правы, не работает.
Правда, я не совсем понимаю, к чему тут относится слово "тоже". В помощь обнаружению такой очевидной ошибки у меня даже pycharm подсвечивает вызов Human(size='big'). И сообщение об ошибке указывает именно на него. Вам осталось чуть-чуть подумать.
0
|
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 6
|
||||||
22.05.2019, 10:41 [ТС] | 7 | |||||
Потому что в "man = Human(size='big')" я обращаюсь к конструктору "Human", в котором нет принимаемого аргумента "size". Для этого я и использую super().__init__(size). Так для чего же тогда нужна конструкция "super().__init__()" если не для таких случаев?
Добавлено через 19 минут В общем, не правильно понимал работу
Подумал еще чуть-чуть и понял что неправ. Было глупо от "super().__init__()" ожидать другого поведения.
0
|
22.05.2019, 10:56 | 8 |
dkdcvc, браво.
На самом деле, во втором примере дело не в super, дело в __init__.
0
|
22.05.2019, 10:56 | |
22.05.2019, 10:56 | |
Помогаю со студенческими работами здесь
8
Ошибка при создании экземпляра класса Ошибка при создании экземпляра класса Database Ошибка при создании экземпляра абстрактного класса Переполнение стека при создании экземпляра класса Ошибка при создании экземпляра шаблонного класса При создании экземпляра класса теряются данные Размер массива при создании экземпляра класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |