Наследование и Переопределяющий __ init __ в Python

any[] означает «Массив, содержащий любое значение».

Массивы имеют свойство keys (хотя это функция, поэтому, вероятно, не то, что вы ищете), но не имеют свойства key.

Возможно, вы хотите получить значения из массива и посмотреть их key свойства.

Рассмотрим forEach или map для этой цели.

124
задан Eugene S 5 May 2014 в 16:08
поделиться

4 ответа

Книга немного устарела в отношении вызова подкласса-суперкласса. Он также немного устарел в отношении встроенных классов подкласса.

В настоящее время это выглядит так.

class FileInfo(dict):
    """store file metadata"""
    def __init__(self, filename=None):
        super( FileInfo, self ).__init__()
        self["name"] = filename

Обратите внимание на следующее.

  1. Мы можем напрямую создавать подклассы встроенных классов, например dict , list , tuple и т. Д.

  2. Функция super обрабатывает отслеживание суперклассов этого класса и вызывает в них соответствующие функции.

149
ответ дан 24 November 2019 в 01:08
поделиться

На самом деле у вас нет для вызова методов __ init __ базового класса (классов), но вы обычно хотят, чтобы сделал это, потому что базовые классы выполнят там некоторые важные инициализации, которые необходимы для работы методов остальных классов.

Для других методов это зависит от ваших намерений. Если вы просто хотите что-то добавить к поведению базовых классов, вам нужно вызвать метод базовых классов дополнительно к вашему собственному коду.

14
ответ дан sth 24 November 2019 в 01:08
поделиться

Если класс FileInfo имеет более одного класса-предка, вам определенно следует вызвать все их функции __init __ (). Вы также должны сделать то же самое для функции __del __ (), которая является деструктором.

4
ответ дан marcog 24 November 2019 в 01:08
поделиться

Да, вы должны вызвать __ init __ для каждого родительского класса. То же самое касается функций, если вы переопределяете функцию, которая существует в обоих родителях.

2
ответ дан vezult 24 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

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