• Python code PyCharm
    На первый взгляд ну очень хороша. На второй взгляд стало немного страшно, т.к. на первый взгляд простую ситуацию вида
    
    class A(object):
        def foo(self): pass
    class B(A):
        def foo(self): pass
    b = B()
    b.foo
    
    разрулило неправильно. При переходе на b.foo пошло сразу на A.foo почему-то. Короче, всё равно придется внимательно следить, видимо.
    ♡ recommended by @Rondo

Replies (12)

  • @kb, report a bug?
  • @LittleChris, не, там ситуация сложнее оказалась. Лень рассказывать. Вкратце — там чуть сложнее и ИДЕ винить не приходится.
  • @kb, <bound method B.foo of <__main__.B object at 0x7f127e976e90>> или ты о чем-то другом?
  • @kb, В веб-интерфейсе пробелы слизало. Возможно стоило добавить *code
  • @kb, paste.ubuntu.com

    короче оказалось что я шёл в b.start, попадал в A.start, затем из него
    в self.do_something и попадал на do_something в A (естественно), хотя
    хотел изначально в B (естественно). ИДЕ тут угадать очень тяжело, тут
    проблема во всей этой ООП-лапше.
  • @Kxepal, не, я про навигацию по коду внутри ide :)
  • @kb, хм..у меня pycharm 2.7.2 показал что, foo относится к B. второй пример так же корректно показал у кого start и у кого do_something. видимо нужно что-то сложное, но я вот сейчас ковыряю домены сфинкса и проблем пока не замечал. а там та еще каша из зависимостей и прокси объектов
  • @Kxepal, проблема в том, что ты используешь эту лабуду вызывая .start(). Потому читая код ты идёшь в start, а уж из него на do_something нижнего класса, хотя заинтересован, естественно, в верхнем.
  • @kb, короче нудные проблемы у меня, не надо было пост писать и время ваше тратить :)
  • @kb, а, в плане разобраться откуда ноги растут. понял тебя(: хм, даже о таком не задумывался. обычно либо ручками смотрю от исходного класса, а не от родителя, либо через trace.Tracer прогоняю вызов
  • @Kxepal, ну да, просто я долго тупил, пока не понял, что не в тот класс смотрю. Короче фигня.