Вы можете передать объект, на который хотите сослаться, другой объект, а затем напрямую получить доступ к атрибуту. Если вы хотите просто сделать синтаксис более приятным, вы можете добавить следующий метод:
def up(self, levels):
if levels < 0:
raise ValueError('cannot go up negative levels')
obj = self
while levels > 0:
obj = obj.parent()
levels -= 1
return obj
, тогда вместо
self.parent().parent().parent().parent().counter_widget.increment()
вы можете просто написать:
self.up(4).counter_widget.increment()
Надеюсь, это было полезно!