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 trialStefan Rakocevic
3,402 PointsCouple of questions
Hey,
so a couple of things I wanted to ask, which i have probably missed so far! Please lend me a helping hand!
The init function builds the attributes of the class, right? Does it do something else other than defining attributes? If we don't use init the other functions would not work, right?
Why don't we use self.location on any of the other functions?
Why don't we use f'{self.card} on the str function but just return self.card?
Why does the dunder main method(?) have these '' ('main') and all the other dunder methods(?) don't (eg. str or name?)
Thank you alot, and I apologize in advance if some of the questions are too basic :)
Have a good day!
2 Answers
Jeff Muday
Treehouse Moderator 28,722 PointsYou ask some very substantial questions -- it shows you are really thinking about what object orientation implies. That's very cool.
1) __init__
is an initializer or constructor for a particular class. It is called when a class is instantiated (or is created).
Another custom method of a class can be defined to do the other work of the class, and yes it can initialize/change properties too.
Python can be written with an object-oriented focus, but can also be written "functional programming" style. It's totally flexible.
2) Lacy is using self.location
very specifically. You could write 'setters' and getters' (specific Python methods to set properties if you wanted). But it makes sense to manipulate those directly (when you change a location, for example).
3) You have cleverly identified a best practice for object types! Lacy is keeping it simple for this example.
4) I think you are identifying that a Python program can be an object too. The program does have dunder properties and methods, but these are fairly limited. It is a special case at the top-level of a program. You don't have self
to reference. Later on, you'll make more use of these.
Take a look at this concise resource it should come in handy: https://www.geeksforgeeks.org/dunder-magic-methods-python
Have a great Python journey, you've got quite a bit of natural curiosity which will serve you well!
Stefan Rakocevic
3,402 PointsThank you very much for the friendly reply!