Супер конструктор Pylint не запускает E1120 - PullRequest
0 голосов
/ 18 сентября 2018

Pylint имеет существующую ошибку E1120, которая сработает, если в конструкторе отсутствует значение.Это, однако, не вызывает наследования.Например, посмотрите на это:

class Parent(object):
    def __init__(self, x):
        self.x = x


class Child(Parent):
    def __init__(self):
        super().__init__()


if __name__ == "__main__":
    c = Child()
    p = Parent()

Как видите, конструктор класса Parent принимает аргумент x, но наследующий от него Child ничего не передает.

Если мы запустим pylint --errors-only X.py только для ошибок, мы получим следующее:

X.py 13: 8: E1120: нет значения для аргумента 'x' в вызове конструктора (нет значения для параметра)

Это для прямого вызова Parent() в конце файла.Нет ошибок, сгенерированных при создании Child(), ни при вызове super().__init__(), что является ошибкой.В частности, выполнение этого напрямую с python приводит к:

Traceback (most recent call last):
  File "X.py", line 12, in <module>
    c = Child()
  File "X.py", line 8, in __init__
    super().__init__()
TypeError: __init__() missing 1 required positional argument: 'x'

Поэтому я ожидал бы, что pylint поймает это как ошибку.Я что-то пропустил?Или это проблема в pylint?

Соответствующие версии: pylint 2.1.1 astroid 2.0.4 Python 3.5.2 (по умолчанию, 23 ноября 2017 г., 16:37:01)

...