Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Python Basics (2015) Python Data Types Strings

Adam Cameron
.a{fill-rule:evenodd;}techdegree seal-36
Adam Cameron
Python Web Development Techdegree Graduate 16,731 Points

Question about different types of functions

The Python docs are no help (are they ever any help to non-professionals?) so I'm gonna try asking here - can someone break down/point me to literature explaining why some functions attach to strings with .function_name() and some require you to pass the string as an argument like function_name(string)? Is it just arbitrary or is there some reason for this? I think understanding would help me avoid careless mistakes later.

2 Answers

.function_name() are called methods and function_name() are called functions.

The answer is a little technical, and it will be covered in detail in a future course.

Think of making a string. This is basically making an instance of the class String.

A class is like a model, or, if you'd like, a blueprint. Think of a class as a cookie cutter. You can use the cookie cutter to make cookie instances, but you can't use the cookie cutter itself for eating. You only eat the instances (the cookies you make with the cookie cutter) of the cookie cutter class.

Now, back to strings. There's a String class behind the scenes in Python. When we make a new string by using "Hello", we are simply creating an instance of the String class.

Classes have what's called an instance method, which is a method that can be called on an instance. You use a period to separate the name of the method with the instance. Here's an example: "Hello".split() We are calling the split() method on the string instance. Remember, we use a period/dot to separate the two! The period is basically saying: Use the method on the right to call the instance on the left!

So, basically "Hello".lower() is calling the lower() method on the "Hello" instance. Just repeating :smiley:

I hope this clears things up. Don't worry if this is still confusing, as classes is the hardest thing to learn for most students, including myself. This all will be covered in a future course! :smile:

I hope this helps :grin:

Happy coding! :tada:

:dizzy: ~Alex :dizzy:

No problem :)