Re: intX.__str__() ??

Discussion in 'Python' started by Michael Torrie, Feb 24, 2013.

  1. On 02/24/2013 09:23 AM, Ethan Furman wrote:
    > On 02/24/2013 07:46 AM, wrote:> Hi guys,
    >>
    >> Question. Have this code
    >>
    >> intX = 32 # decl + init int var
    >> intX_asString = None # decl + init with NULL string var
    >>
    >> intX_asString = intX.__str__ () # convert int to string
    >>
    >> What are these ugly underscores for? _________________str___________________

    >
    > This is a good example of why you shouldn't program language X in language Y.
    >
    > For starters, `intX.__str__` should be written as `str(intX)`;
    >
    > For middlers, intX_asString is probably not necessary (is it being printed? then
    > do a `print intX`, or a `print "size left on disk: %d" % intX`, etc.
    >
    > For finishers, why the System Hungarian Notation?


    I think he's maintaining existing code. It's unfortunate that his first
    exposure to python is code written by someone else in such a poor style,
    and in a way that definitely isn't pythonic. No wonder he's struggling
    to like python! Though I'm sure since his recent experience has been
    exclusively in C# that he probably uses hungarian notation as a matter
    of course. A hard habit to break! Is this a good time to introduce him
    to duck typing? Probably not.

    Another way to explain the double underscore methods is that they are
    how things like operator overloading is performed. Want to make a class
    that you can use the [index] notation on instances? Define the
    __get_attr__() method. And to define a class that you can then use
    instances with the + operator? Define the __add__() method. This is a
    good introduction:
    http://getpython3.com/diveintopython3/special-method-names.html
    Michael Torrie, Feb 24, 2013
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Jim Newton

    how to use __str__ and __repr__?

    Jim Newton, Jun 7, 2004, in forum: Python
    Replies:
    15
    Views:
    535
    Peter Maas
    Jun 9, 2004
  2. Dan Sommers
    Replies:
    3
    Views:
    297
    Serge Orlov
    Feb 19, 2005
  3. Ethan Furman

    Re: intX.__str__() ??

    Ethan Furman, Feb 24, 2013, in forum: Python
    Replies:
    0
    Views:
    84
    Ethan Furman
    Feb 24, 2013
  4. Mitya Sirenef

    Re: intX.__str__() ??

    Mitya Sirenef, Feb 24, 2013, in forum: Python
    Replies:
    2
    Views:
    106
    Mitya Sirenef
    Feb 24, 2013
  5. Ethan Furman

    Re: intX.__str__() ??

    Ethan Furman, Feb 24, 2013, in forum: Python
    Replies:
    1
    Views:
    73
    Roy Smith
    Feb 24, 2013
Loading...

Share This Page