Very practical question
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Wed Jul 5 16:37:13 EDT 2006
madpython a écrit :
> Marc 'BlackJack' Rintsch wrote:
>
>>In <1152117913.457095.306480 at p79g2000cwp.googlegroups.com>, madpython
>>wrote:
>>
>>
>>No it's not the normal way. Why don't you give `c` as argument to the
>>`interClassCall()`?
>>
>>class B(object):
>> def interClassCall(self, c):
>> print c.a.a()
>>
>>class C(object):
>> def __init__(self):
>> self.a=A()
>> self.b=B()
>> def c(self):
>> self.b.interClassCall(self)
>>
>>Much less magic involved this way.
>
> As far as I remember what you suggest would be perfect solution for
> Java.
And for any other language, be it OO, functional or strictly procedural.
> In other words it's a matter of getting a reference to "a"
> (the instance of class A) and your variant just one of the others
> possible. Maybe I came up with not very good example, so maybe I try to
> explain it verbally.
> As I already have written I play with Tkinter and make an application
> that does some stuff. It uses dynamic GUI building depending on data it
> process. Also one of the requriments is to separate the program logic
> from GUI.
Separating program logic from presentation is not excuse to write bad code.
> Here is a short illustration:
>
> ...
> self.b=Tkinter.Button(root,txt="Button",command=self.doSmth).pack()
> self.l=Tkinter.Label(root,txt="default").pack()
> def doSmth(self):
> var=globals()["m"].__dict__["progLogic"].func("some
> input")
Yuck++
> self.l.config(txt=var)
> self.l.update_idletasks()
> ...
> I guess it's all correct
It's an horror.
> or at least it close to what I work on. What
> do you think?
I think that it's an horror.
> If I may I'd say it again that GUI is built according by
> the data that's passed by the "thinking" part of the program
It's not "passed".
> so I
> don't necessary know what it is
What is polymorphism for ?
> (can only guess)
You don't have anything to guess. Just to learn what "design" means.
> and that's why passing
> references as an argument doesn't seem possible.
Then you have a problem with your design. FWIW, decoupling presentation
from program logic is nothing new - it has been solved *many* years ago.
Google for MVC.
More information about the Python-list
mailing list