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?
len(string) passes the object ‘string’ to a function ‘len’ that returns its length.
sting.len() (edit: hypothetically if it existed) calls the method ‘len’ which is an inherent part of any object of string type.
In practice the result is the same, but the latter is the more object-oriented approach.
Thanks this is helpful.
Function - probably has some limitations depending on what it is meant to do but generally I send a thing, it does it’s function to that thing, and returns the result (or error).
Method - part of the thing itself. Would have to be defined for that ‘object’ and if it isn’t then it probably doesn’t make sense to ask for that info.
Probably have a ways to go to understand objects and why I would choose one VS the other.
Follow up question. Are there any other ways I would find the length? Or are methods and functions the only options?
Are there any other ways I would find the length? Or are methods and functions the only options?
You could get creative and find several inferior, silly, and utterly insane ways of achieving the same result, for example by treating a string as an interable (read: “list” or “array”) of its constituent characters, and count the number of characters. This feels very “example (but not exemplary) code on the first pages of a crappy C++ textbook”, but hey, it’s a way:
length = 0
string = "foobar"
for char in string:
length = length + 1
print(length)
Mind you, this is not programming. This is toying around, and perfectly valid in that way, but no-one in a halfway sane state of mind would dare suggest doing it this way with Python if you actually care about the result. :)
Definitely don’t want the extra complexity. Guess my question is if there is a third type of statement (function, method, ____) or maybe even more. From other replies it doesn’t sound like it.
There are definitely ways, IIRC str.len() is a function, but the double underscores basically mean “please don’t call this directly”. There might be other “hidden” variables tracking it, and if you wanted you could add a .length method to the string class at runtime
The beauty of python is it’s pretty consistent in giving you one correct way to do things with the language, it will let you shoot yourself in the foot if you want to though