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 trialWen Jian Kwok
1,846 PointsThis is agonising
I have enjoyed the previous modules in this track, but when it got to this part on object oriented programming, the examples used have not relatable (I imagine they might be fun to instructor). Sadly, it does not help with understanding the concept. I'm disappointed
Rutendo Mujawo
2,589 PointsI honestly thought I was the only one. I'm finding myself having to ask for help for each challenge but with previous modules I easily understood
Izabella Exeoulitze
Courses Plus Student 1,665 PointsAbsolutely agree with you. I'm very disappointed.
Jimmy Sweeney
5,649 PointsAs someone very new to coding, I agree with the sentiments here. I'm finding myself totally lost. I'm not certain if it's because I lack a certain level of programming experience or... something about the presentation of the material.
However, as a teacher, I understand how difficult it is to teach complex concepts. So I hope we can continue to provide Kenneth with useful feedback because I don't want him to get discouraged. Unfortunately, I can't even give feedback because I don't really know where I'm getting tripped up. I'm just getting really lost.
Also, I think it'd be good to update the coding challenges. I'm finding that I can complete the challenges, without really understanding what in the world I'm doing or why. They seem to be set up in a way where I can just sort of figure it out by copying what was done in the tutorial.
Darcie Kutryk
2,129 PointsSo relatable to see all of these comments!
I don't want to come down too hard on Treehouse because we really do need this resource. But these videos aren't teaching me how to think, I'm watching other people come up with solutions for something already in their minds. And because I don't recognize the concepts they are trying to show, I don't know where to start researching or which questions I should be asking at my current point in understanding. I find myself asking "what am I supposed to be learning here" for too much of the time.
I've had great help with the community (thank you Chris and Stephen, especially), but my foundation just isn't there for it to help me beyond isolated examples. I will have to circle back to this track after I fill in the blanks elsewhere, like many of you here in the comments.
16 Answers
James Arnold
3,986 PointsI completely agree. The introduction of the magic methods is where Kenneth loses me. He continues to build off the NumString class and it seems completely pointless and doesn't really give me any perspective of how to utilize it in a real program. It should be redone.
Chris Freeman
Treehouse Moderator 68,457 PointsJames Arnold, I love answering questions on classes, inheritance, and magic methods. You can review other questions and answers on this topic here:
https://teamtreehouse.com/community/sort:active/stage:12482
Feel free to tag me in any question you post.
James Arnold
3,986 PointsChris Freeman - I appreciate your constant help around the forums answering questions and concerns (many of which I have benefited from reading) but it's the teaching style of Kenneth that is tough to digest. His style of posing questions he already knows the answer to is lost on the viewer when he doesn't go into any depth of how he knew what he had was wrong, and how he got to having the correct solution. I've restarted the OOP section, taken very in-depth notes and still got lost at the exact same point as I did the first time through (Built-in magic methods such as add() and why you would use them). Now realizing it's not an issue that I'm not paying enough attention or misunderstanding, but the content is not explained well enough. I'm concerned I will have to find further resources to cover this concept for me, as Kenneth just doesn't seem to be able to break it down well enough for a beginner.
Chris Freeman
Treehouse Moderator 68,457 PointsThat’s a fair assessment. After Kenneth left Treehouse for other opportunities. Craig Dennis started developing update content, but then he also left. Ashley then started making new content but has recently left Treehouse. I don’t have information on current material development.
Chris Freeman
Treehouse Moderator 68,457 PointsThe short answer to your question: When one needs to create the __add__
method?
The __add__
method is created for classes instances that will be used in statements with a plus + operator. The built-in class int
uses the __add__
method in the classic sense of addition. The str
and list
have a __add__
method that allow the + to become a concatenation operator.
Since the NumString
class is a string based class, the + operator would default to try concatenation of the two instances. The __add__
method is created to override this behavior create a “numerical addition of two strings”.
James Arnold
3,986 PointsChris Freeman - Thank you so much for your time and well thought out explanation. I understand now the objective of the lesson - changing background magic methods integrated into Python to suit your current goals needs. I'll be the first to recommend you start creating the content for Treehouse :p
James Arnold
3,986 PointsPhil Grollo Carl Crowther & anyone else who will eventually get to this post - I would HIGHLY recommend (no, seriously watch them) going through the free Corey Schafer Python OOP section he has on YouTube - https://www.youtube.com/watch?v=ZDa-Z5JzLYM - after watching all of these videos and coming back to re-watch Kenneth's videos it was MUCH easier to digest. I guarantee you will have a much better understanding with this supplementary material. Good luck coding to everyone!
Phil Grollo
1,519 PointsI will check these out. Thank you. I haven’t been on tree house since my post cause I don’t wanna just skip the section but have no urge to continue with kenneth. Hopefully this fixes the problem
Izabella Exeoulitze
Courses Plus Student 1,665 PointsThanks James, I've checked the videos and I do like the examples. They're quite relevant and easier to absorb.
Brian Davis
1,628 PointsThanks James, I will check those out. I'm seriously thinking about dropping my treehouse subscription for something else because I'm hitting a wall here. Also, if the teachers have left and people are indicating that they are losing interest, why hasn't treehouse worked on getting new videos produced? Just in this chat, comments are going back 7 months now!
Carl Crowther
5,005 PointsThanks, James genuine lifesaver, I really didn't want to give up on Python, Treehouse needs to rebuild these series as its doing your platform a massive injustice to keep them and just frustrate users, while we have come to the community to express our disappointment, I feel sorry for all the other poor souls who are none the wiser! ALL of Corey's videos are 110%, comprehensively laid out, well explained using simple examples to explain complex ideas. If you are struggling at all, like I was with Kenneth's videos check out Coreys YouTube series on Python OOP. I've spent the time to go over the rest of his videos there also brilliant!
grantcenter
8,421 PointsThis is EXACTLY what I had to do. I clicked on this discussion section to see if i was the only one not getting it and thank God I'm not, now i dont feel so dumb lol. I got super lost when I got to this object oriented programming section. Left here, found Corey Schafer on youtube and binged on his videos for like a month because they are AMAZING and I was actually learning and progressing! Came back to try and finish this out since I have money invested with this, and it's still quite the struggle. At this point, I have an idea of what's going on (thanks almost entirely to Corey's videos), but this section is just absolutely horrible. Hopefully when I get done powering through this section it picks up again and gets better. Otherwise, I'll be moving on and sticking to youtube and stackoverflow.
ct9
11,778 PointsThank you James. I finally understood what 'self' actually is from that YT link.. Thanks a lot man! I appreciate it.
Phil Grollo
1,519 PointsI'm glad I'm no the only one. I've really enjoyed every other section in python and felt like I was learning the code. As soon as I started with Kenneth and especially Object oriented python I've begun to feel lost. It's actually made me spend less time coding because I can't figure this stuff out. He goes through everything so fast and barely explains anything. I've also taken in depth notes but feel like I just want to skip this section completely. Plus he never changes the examples. He just continues to build upon something I didn't understand in the first place.
Carl Crowther
5,005 PointsIts comforting to know I'm not the only one having issues with Kenneth's style and chosen example. Craig, was solid, Ashley was easily the best to learn from hands down, as she took the time to run through modifying a previous example and updating it with whatever new concept your where learning, thus building upon each concept. She chose simple easily understood examples, so that we weren't tripped up trying to remember the example, and could focus on the concept being taught. Kenneth's crazy thief class, is unnecessarily complex. I like alot here it seems, find myself replaying these videos over and over while searching online for further information to assist. I've not had to do this with any other classes.
Chris Freeman
Treehouse Moderator 68,457 PointsWhy talk about dunder methods in a beginning course? Good question. It’s good to know they exist, but one can code for years and never need to modify them.
It could also be said the OOP is an advanced subject and this course is the beginning of the advanced material.
Here’s all you need to know at the beginning:
- everything in Python derives from some
class
and can be reference directly as aninstance
of that class - the
methods
of a class are used to manipulate the classattributes
(data) - the dunder methods are referenced when an instance is used in a context such as math, comparisons, indexing, etc
- the standard Python objects (
str
,list
,dict
,set
,int
, etc.) have all the dunder methods defined for you - there is a specific dunder method for each context (
__add__
for addition,__lt__
less than for comparisons and sorting, etc.) One should not invent new dunder method, but overriding them is OK - you only have to worry about dunder methods if you create a new class that will be used in a contextual way and Its inherented dunder methods are insufficient (a rare event)
So my advice is:
- understand why dunder methods exist
- revisit this topic when you better understand class inheritance and the use of
super()
Post back if you need more help. Good luck!!!
Izabella Exeoulitze
Courses Plus Student 1,665 PointsI absolutely agree. I went through all other modules very diligently, understood and enjoyed them. Please Treehouse, could you change the pace, structure and examples of the object oriented Python? This is a beginner course and Ken is going at breakneck speed (his natural tendency is to speak fast anyway), which is not helpful or motivating for those who really want to learn Python.
Botshelo Tsogo Tiroyamodimo
3,057 PointsLiterally going through the SAME problem. I almost gave up on learning this because of his teaching style. It is disappointing that treehouse is not doing anything to fix it.
Md. Syful Islam
9,463 PointsIt is such a relief that I am not the only one struggling with OOP. I will request treehouse to crate new easy going content for Object Oriented Python.
Alejandra Estefanía Aguilera Ávila
6,865 PointsI really liked Craig's videos. It's sad he's not at Treehouse anymore...
Md. Syful Islam
9,463 PointsPython used to be a fun to learn, easy to grasp language for beginners, and then Kenneth started teaching python in Treehouse.
Chris Freeman
Treehouse Moderator 68,457 PointsAs for content creation, Kenneth was the first Python teacher, then came Craig Dennis, then Ken Alger, then Ashley Boucher.
Brian Davis
1,628 PointsYes, this is getting to be extremely frustrating. I felt that I had a fighting chance when working on challenges from previous units/teachers, but the challenges with OOP seem to assume that we know skill sets that haven't even been touched on yet. This is my 4th time going through OOP in the last 3 weeks, and I'm still fairly lost. We're paying money to be taught this at a beginner level and I don't have extra hours each day to try and research online or via the community why/how something works.
Chris Freeman
Treehouse Moderator 68,457 PointsYou’re not mistaken. Coding the dunder methods is not beginner material. I’m happy to help answer specific questions on OOP (tag me in new post as needed). For the math video, you can view all related questions on the Questions tab beneath the video, or follow the breadcrumb path at the top of this post, or go here: https://teamtreehouse.com/community/video:82742.
Good luck!
tariqasghar
UX Design Techdegree Graduate 30,519 PointsI think this course being labelled as Beginner is off. It should be (atleast) intermediate, based on the complex topics and code challenges. Even though I can figure out what Kenneth is trying to do (after some time), being an experienced programmer. I don't see beginners getting through this course, without doing a lot of research and study elsewhere.
jessicakincaid
21,834 PointsWen Jian Kwok, your frustration sounds very relatable! It is totally o.k. to cut yourself some slack in this course. I have done all of these things and it seems to be working:
Take a day or a week or two off from the course.
Go back and watch the video again.
Reduce the speed to 0.75.
Take notes, writing what each method does. Definitely take notes on what you type in the shell and what it returns in response to each method.
Change the variables to names and characters that you can identify with better. For example, instead of being a Thief, the second time around, use a class Sorceress or Wizard with a cloak and staff.
Give yourself plenty of time. You've got this1
Brian Davis
1,628 PointsThen why are the dunder methods part of the "Beginner Python" course?
Chris Freeman
Treehouse Moderator 68,457 Pointsresponded as answer
anna01
4,818 PointsI am having the same issue. From the start, the OOP lessons seemed to rush over the basic concepts and dive into complex examples(not beginner examples), and it only got more complex as the lessons advanced. At one point I was just copying Kenneth's code without understanding anything, and it got very frustrating! I had to stop and go to my udemy courses and youtube to get a better explanation. Unfortunately, Kenneth's teaching style was not the best fit for this lesson. This OOP section needs to be redone.
Chris Freeman
Treehouse Moderator 68,457 PointsChris Freeman
Treehouse Moderator 68,457 PointsSorry your are finding the examples unrelatable. If there a concept that is need further explanation, please post a question about it. Tag me if you wish.