Я использую стороннюю библиотеку Python ( wx Python), в которой один из модулей содержит класс ошибки.
Код проблемной части c выглядит следующим образом :
def OnText(self, event):
value = self.GetValue()
if value != self.__oldvalue:
pass # Here some more code follows ...
self.__oldvalue = value
Проблема в выражении if
, так как при первом вызове этого метода self.__oldvalue
еще не был инициализирован. Так что для обходного пути, пока эта ошибка не была исправлена разработчиками библиотеки, я подумал, что смогу исправить это с помощью небольшого обходного пути. Я просто хотел извлечь дочерний класс из этого неисправного класса и инициализировать self.__oldvalue
в этом конструкторе:
class MyIntCtrl(wx.lib.intctrl.IntCtrl):
def __init__(self, *args, **kw):
self.__oldvalue = None
super().__init__(*args, **kw)
Однако теперь, когда я использую этот новый класс MyIntCtrl
вместо исходного IntCtrl
класса , Я получаю точно такую же ошибку, как и раньше:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/wx/lib/intctrl.py", line 509, in OnText
if value != self.__oldvalue:
AttributeError: 'MyIntCtrl' object has no attribute '_IntCtrl__oldvalue'
Теперь мне интересно: что я делаю не так, как еще я могу исправить эту проблему в дочернем классе?