Так можно:
class A(object):
def func(self):
print "it works"
class B(object):
def func2(self):
a.func()
if __name__ == '__main__':
a = A()
b = B()
b.func2()
А вот так уже нельзя:
class A(object):
def func(self):
print "it works"
class B(object):
def func2(self):
a.func()
class C(object):
def __init__(self):
a = A()
b = B()
b.func2()
if __name__ == '__main__':
c = C()
Или я просто не вкурил, как вызвать вышележащий namespace. Или я делаю нечто нехорошее, за что бьют канделябром.
Зачем мне это нужно: в программе леплю класс, абстрагирующий от остального кода GUI. Внутри него должно крутится все связанное с *graphical toolkit name*. Два окна, два класса. В одном прилетает callback, оно себя закрывает и должно вызывать show для другого окна.