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,
- Len(string)
- 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?
At the end of the day,
len(ob)
just defers toob.__len__()
so both are correct, just one’s more functional and one’s more object oriented.Things prefixed with two underscores are considered private, and typically should not be accessed directly.
https://docs.python.org/3/tutorial/classes.html#private-variables
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.