2014-09-17 5 views
-2

У меня есть ошибка pylint:Pylint ошибка __init__ метод из базового класса '*' не называется

__init__ method from base class 'night' is not called

У меня есть файл с именем day_night.py:

// is_it_night returns True False depending on the time 
import is_it_night 

class Day(): 

    def __init__(self): 
     // dosomething 

class Night(): 

    def __init__(self): 
     // dosomethingdifferent 
what_time = Day 

if is_it_night(): 
    what_time = Night 

Теперь у меня есть класс, который называется instance.py, который выглядит следующим образом:

from day_night import what_time 

class instance(day_night): 

    def __init__(self): 
     what_time.__init__(self) 

И теперь я получаю пилон ROR на incstance.py что

__init__ method from base class 'night' is not called 

Как это исправить, я попробовал супер, но это создает другие проблемы

если я сделать instance.py

from day_night import what_time 

class instance(day_night): 

    def __init__(self): 
     super(instance, self).__init__(self) 

Я получаю следующее сообщение об ошибке: использовать супер на старом классе

стиле И я предпочел бы не делать # pylint: отключить =

+0

'__init'! =' __init__'. Кроме того, если вы используете 'super' правильно, это не создает других проблем. Покажите нам свой код с помощью 'super' – shx2

+1

Не могли бы вы исправить отступы, комментарии, опечатки и т. Д.? Другими словами, пожалуйста, покажите нам свой фактический код, а не какое-то неопределенное приближение. – NPE

+0

Вы также используете «я» в качестве базового класса. Предложите исправить свой пример кода, чтобы он запускался. –

ответ

1

Фро В моем понимании вы хотите что-то сделать в инициализации день/ночь с экземпляра instance.py.

Изменить код в instance.py на:

from day_night import what_time 

class myInstance(what_time): 
    pass 
    # do something, other than defining a __init__() function 
m = myInstance() 

Если вы не определили в подкласс __init__(), когда он Instancing, __init__() из BaseClass будет вызван.

Сообщите мне, если это будет работать.

+0

Теперь я получаю ошибку: __init__ метод из базового класса 'night' не вызывается, а метод __init__ из базового класса 'day' не называется – mariomario

+0

@mariomario. Проверьте мое обновление. –

+0

Это сработало спасибо – mariomario

1

Ваша проблема, как представляется,

from day_night import what_time 

class instance(day_night): 
    what_time.__init__(self) 

Здесь

from day_night import what_time 

импортировать класс what_time, и от этого вы должны получить.

Так что

class instance(what_time): # instance is wrongly named... 
    def __init__(self): 
     super(instance, self).__init__() # here you do the requested call 

или, если вы не можете изменить свои классы для new.style классов по какой-то причине (просто вывести из object дополнительно), вы можете сделать

class instance(what_time): # instance is wrongly named... 
    def __init__(self): 
     what_time.__init__(self) # here you do the requested call 

Или, как m170897017 предполагает, опускаем __init__ вообще:

class instance(what_time): # instance is wrongly named... 
    pass 
+0

См. Обновленный вопрос – mariomario

+0

Ugh исправил его с derving от объекта – mariomario

Смежные вопросы