Python actually gives me hope for VFP and the "open source" movement. If
Python can be such a force when it is ruled by one guy, VFP has a chance.

John

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of Ed Leafe
Sent: Wednesday, September 27, 2006 9:06 AM
To: ProFox Email List
Subject: Re: [NF] Python - Thinking Differently

On Sep 27, 2006, at 9:03 AM, Alan Bourke wrote:

>> Everything, and I mean everything, in Python is an object.
>
> Basic types like int aren't, surely?

        Surely they are! Strings, ints, booleans - all objects. A class  
definition? That's an object, too. A function or an object's method?  
Objects, too.

        This is incredibly useful once you get your brain around it. Let's  
say that you have an object, and want to tell another object to do  
something, and when it's done, to let the original object know that  
it's complete. This is commonly called a 'callback'. In Python, you  
would pass a reference to the callback function directly to the  
target, and it would then invoke that function reference. The code  
would look something like this (keep in mind that 'def' is equivalent  
to Fox's 'PROC'):

class MainObject(object):
        def initiateAction(self):
                # Assume that 'target' is a reference to the TargetObject
                # class already established
                self.target.doSomeAction(self.notification)
        
        def notification(self, result):
                # This is the callback function
                print "Process complete, result:", result

class TargetObject(object):
        def doSomeAction(self, callback):
                # Run some length process, and then pass the
                # result to the callback
                longProcess()
                anotherLongProcess()
                ret = finalLongProcess()
                # Here's the callback
                callback(ret)


        Note that in the last line, 'callback' is being called as a  
function, even though it was passed as a parameter. Note that the  
name of the callback method doesn't matter, nor does the object to  
which it belongs, if any.

        This is just the tip of the iceberg. Once you get used to thinking  
along these lines, it makes designing complex interactions much  
simpler, especially for asynchronous events. It also makes class  
factories ridiculously easy to write; since a class definition is an  
object, there is nothing to stop you from subclassing from it on the  
fly - after all, you're just creating a new class object!

-- Ed Leafe
-- http://leafe.com
-- http://dabodev.com




[excessive quoting removed by server]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to