Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Note that the name "self" is a convention, not a requirement. If it's just the amount of keystrokes that you're concerned about, name it something else like "o".

Of course, good luck having someone else understand your code...



Did not know this. Thought self was equivalent to this in Java. Mind = blown.


See, you pass it as a parameter

So it can be called anything you want

BUT DON'T DO IT! Because you'll break the convention and anyone who maintains your code after that will hate you.


You can ALSO declare a class member function in a different file. Since it just accepts self as the first parameter... It still works.


Peter Norvig once proposed using '_' but got shot down.


'_' is already idiomatic for throwaway variables. It wouldn't help matters to use it for OOP.


In the Python world, '_' is used in three different ways:

* As a throw-away variable:

    >>> a, b, _, c, d = f(t)
* As a gettext call:

    >>> print _('Welcome to Python')
* And at the interactive prompt as the result of the previous expression:

    >>> 3 + 4
    7
    >>> _ * 10
    70


As most of my Python involves localized Django, I twitch every time I see `_` used for anything other than some variation of gettext.


Weird, since the gettext use-case is definitely the least idiomatic and least common use of `_`.


As I said, most of my Python involves localized Django. So gettext is used everywhere and (apart from the REPL) it's the other uses of `_` that are the odd ones out.


that's why you should use '__' as throw-away variable (two underscores)


Wow. How did I go years without knowing this about the repl?


Its a really crap variable name as well. I posted on Stack Overflow asking what it was doing, assuming it was some Python syntax, only to be pointed to the import at the top of the file, which was being renamed to "_". Give variables meaningful names please.




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

Search: