Форум сайта python.su
0
Добрый день. Имеется примерно такая конструкция:
class AAA(object): def trace(message): print(message) def start(): b = BBB() b.run() class BBB(object): def trace(message, AAAtrace): AAAtrace.trace(message) def run(): self.trace('Строка текста')
Офлайн
103
вам ооочень нужно почитать книгу!!!
class AAA(object): def trace(self, message): print(message) def start(self): b = BBB() b.run() class BBB(object): def trace(self, message): print message def run(self): self.trace('hello') a = AAA() a.start()
Офлайн
0
terabayt Вы неправильно меня поняли. В вашем коде ‘hello’ печатает метод BBB, а надо чтобы метод AAA. Наверно я плохо объяснил, потому что книгу не прочитал, да?
Офлайн
103
ruthvenда! как мимнимум вы бы self написали
Наверно я плохо объяснил, потому что книгу не прочитал, да?
class AAA(object): def trace(self, message): print(message) def start(self): b = BBB() self.trace(b.run()) class BBB(object): def run(self): return 'hello' a = AAA() a.start()
terabayt
вам ооочень нужно почитать книгу!!!
Офлайн
0
terabayt BBB может посылать на печать не только одну строку, т.е. return не катит.
то что вы хотите сделать не имеет никакого практического смыслаПосоветуйте тогда, пожалуйста, как реализовать такую штуку - Имеется класс AAA, в нем с помощью модуля tkinter будет текстовая область (объект Text из tkinter), из AAA запускается BBB, который в эту текстовую область передаёт строки (сколько их будет заранее неизвестно)
Офлайн
88
Классически, объекту может передаваться ссылка на объект-владелец, посредством которой можно или вызывать методы владельца, или слать ему сообщения. Применительно к tkinter ничего конкретного посоветовать не могу.
Офлайн
0
Shaman А может можно каким-либо способом передать ссылку не на ААА, а на сам объект Text() ?
Офлайн
103
ruthvenага, вы хотите чтоьы класс Б постоянно имел возможность вставлять в текстовое поле, что объявлено в классе А?!
Посоветуйте тогда, пожалуйста, как реализовать такую штуку
import Tkinter class AAA(Tkinter.Frame): def __init__(self, parent): Tkinter.Frame.__init__(self, parent, background="white") self.parent = parent def initUI(self): self.parent.title("Simple") self.pack(fill=Tkinter.BOTH, expand=1) self.text = Tkinter.Text(self) self.text.place(x=50, y=50) button = Tkinter.Button(self, text="Go", command=self.bb) button.place(x=50, y=10) def bb(self): b = BBB(self) b.run() def set_text(self, s): self.text.insert(1.0, s) class BBB: def __init__(self, parent): self.parent = parent def run(self): for i in xrange(10): self.parent.set_text(' -- %d --\n' % i) def main(): root = Tkinter.Tk() root.geometry("650x550+300+300") a = AAA(root) a.initUI() root.mainloop() if __name__ == '__main__': main()
Офлайн
0
terabayt Вроде бы суть уловил, сейчас попробую. Спасибо.
Офлайн
88
ruthvenМожно передавать ссылку на что угодно существующее.
Shaman А может можно каким-либо способом передать ссылку не на ААА, а на сам объект Text() ?
Офлайн