Confessions of a Python fanboy

Jean-Michel Pichavant jeanmichel at sequans.com
Thu Jul 30 14:24:39 CEST 2009


superpollo wrote:
> Masklinn wrote:
> ...
>> That's an interesting point, but not relevant at the end of the day:  
>> `foo.length` and `length(foo)` have the same "practicality". On the  
>> other hand Ruby can be praised for the coherence: everything's a  
>> method period end of the story; while Python does have a dichotomy  
>> between methods and functions/generic methods (whether or not that  
>> dichotomy bothers users is another issue).
> ...
> how would you correct a newbie (like me) who says:
>
> "well, the main difference between a function and a method (from the 
> caller's pow) is a syntactic one:
>
> fun(obj, arguments)
>
> as opposed to:
>
> obj.met(arguments)
>
> but the effect is just about the same."
>
> ?
>
> bye

My suggestion

- OO programming:
length(foo) calls the foo instance(or class for some language) length method
length(bar) calls the bar instance length method, it is **not** the same 
than the foo method

- non OO programming:
length(foo) calls the length function with foo as parameter
length(bar) calls the **same** length function with the bar parameter 
(so you better make sure length is handling both foo and bar)

So the difference is definitely **not** a syntactic one, but it is true 
that the syntax obj.method() better illustrates the bind mechanism of 
the OO programming.

JM




More information about the Python-list mailing list