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 Object-Oriented Python Advanced Objects Math

This 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

Chris Freeman
Chris Freeman
Treehouse Moderator 68,441 Points

Sorry 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.

I 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

Absolutely agree with you. I'm very disappointed.

Jimmy Sweeney
Jimmy Sweeney
5,649 Points

As 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
Darcie Kutryk
2,129 Points

So 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
James Arnold
3,986 Points

I 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
Chris Freeman
Treehouse Moderator 68,441 Points

James 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
James Arnold
3,986 Points

Chris 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
Chris Freeman
Treehouse Moderator 68,441 Points

That’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
Chris Freeman
Treehouse Moderator 68,441 Points

The 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
James Arnold
3,986 Points

Chris 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
James Arnold
3,986 Points

Phil 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
Phil Grollo
1,519 Points

I 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

Thanks James, I've checked the videos and I do like the examples. They're quite relevant and easier to absorb.

Thanks 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!

Thanks, 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
grantcenter
8,421 Points

This 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.

Thank you James. I finally understood what 'self' actually is from that YT link.. Thanks a lot man! I appreciate it.

Phil Grollo
Phil Grollo
1,519 Points

I'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.

Its 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
MOD
Chris Freeman
Treehouse Moderator 68,441 Points

Why 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 an instance of that class
  • the methods of a class are used to manipulate the class attributes (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!!!

I 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.

Literally 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
Md. Syful Islam
9,463 Points

It 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.

I really liked Craig's videos. It's sad he's not at Treehouse anymore...

Md. Syful Islam
Md. Syful Islam
9,463 Points

Python used to be a fun to learn, easy to grasp language for beginners, and then Kenneth started teaching python in Treehouse.

Chris Freeman
Chris Freeman
Treehouse Moderator 68,441 Points

As for content creation, Kenneth was the first Python teacher, then came Craig Dennis, then Ken Alger, then Ashley Boucher.

Yes, 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
Chris Freeman
Treehouse Moderator 68,441 Points

You’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
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
tariqasghar
UX Design Techdegree Graduate 30,519 Points

I 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
jessicakincaid
21,834 Points

Wen 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

Then why are the dunder methods part of the "Beginner Python" course?

anna01
anna01
4,818 Points

I 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.