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)