Just started as in, I’m about an hour into a 4 hour intro video. Seeing two basic ways of manipulating things and don’t understand the difference.

If I want to know the length of a string and I just guess at how to do it I would try one of these two things,

  1. Len(string)
  2. string.len()

What is the difference between these types of statements? How do I think about this to know which one I should expect to work?

  • charolastra
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    5 months ago

    At the end of the day, len(ob) just defers to ob.__len__() so both are correct, just one’s more functional and one’s more object oriented.

      • charolastra
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        5 months ago

        Keyword “typically”. If I’m overriding dunder methods, then I’ll typically need to call the super method as well. It’s not like it’s forbidden.

        Consider the following:

        class MyStr(str):
             def len(self):
                  return len(self)
                  # OR
                  return self.__len__()
        

        Both of the above return values are perfectly valid Python.