HN2new | past | comments | ask | show | jobs | submitlogin

I use Clojure a lot, and did more Python in the past. Whenever I come back to Python, I am frustrated by being unable to remember what's a plain old function and what's a method, and the differences defining functions vs classes and methods etc..

In Clojure I know it's always (except for interop) just functions on values. Some functions dispatch to an implementation based on the type of the value, as is the case with multimethods and protocols, but it's still always just function calls from my point of view while writing the code.



Objects in Python little more than glorified namespaces. I always think of methods as a function that gets the namespace where it was declared as the first argument. Yes, there is the inheritance thing, but in Python it is just a mechanism to organize code.


In general, Python method is just combination of function object and pointer to "self" namespace.


I'd like to know if it's done differently in other languages. In my view, methods are curried function over self with a '.' syntactic shortcut.


Lua does not do the currying bit, but it does a lot less OOP and a lot more "dictionaries with stuff that can do something like prototype OOP if you squint hard enough". Java and whatnot just don't let you really use methods as first class citizens, so it doesn't matter.


IIRC under the hood Java will 'evaluate' the methods body as a sophisticated function with 'this' in its environment.


That's pretty much how I view them as well.


Great then.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: