Confessions of a Python fanboy

Jean-Michel Pichavant jeanmichel at
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.


More information about the Python-list mailing list