Started up with Python Objects today.
This seems like a long, hard one.
Here’s hoping I learn lots.
Knowing Reuven, I know I will.
Notes
Part 1, Advanced Methods.
This section focuses on the dunder methods in Python.
By default objects are not
equal
to other objects even they they are from the same class, with the same attributes and methods.- We could implement our own
equals
method though. - The point being, we need to be intentional and methodical, when we design and implement our classses
- We could implement our own
Static methods are plain old functions that I write in my class for use by both the class and the instance. Could be used to clean up input or similar such utility functions. I create them by putting a
@staticmethod
decorator atop my method.Class methods are those that are meant for use by only the class. I can call them from my instances, but they act on the class. I create them by using the
@classmethod
atop my method. For clarity, the first variable is now written ascls
instead ofself
.
Part 2, Inheritance.
- MRO, Method Resolution Order. I can do an
classname.__mro__
to see how Python goes about looking for methods upwards, specially if I’m inheriting from multiple objects. Running help on an object also lists the MRO of its methods. - Best to explicity inherit from all parent classes, when inheriting from multiple classes.
- We can use the
classname.__bases__
to check for the classes parents. - A
mixin
is a class, we can inherit from (probably in addition to and before our parent class), that just adds functionality to our class. Does nothing sematically / organizationally to our objects or classes.- The mixin must come first.
- Adding an
__
before an attribute, signifies that it is not to be touched. A little security by obscurity too. Nothing’s stopping me from actually going and changing things up. It’s just a notifier to people with common sense that such stuff ought not to be tampered with.- The main reason though is to prevent conflict between attribute names.
Learning / Feedback/ Experiences from doing exercises
- This course feels like the O’Reilly cookbooks in video form.
- The first section takes all the operators, I take for granted in Python and then shows me how to implement them with my own classes
- how do I get
len
to work on my object? or how do I implement the==
operator in my classes? etc. etc.
- how do I get
- Starting with the last one and this one, have given up on exercises and just taking notes for now. As soon as I finish the run, I will be then going on an exercise binge with these pending exercises as well as Reuven’s Python Workout.
- The execption being, if I run into a topic that is really confusing, then I will attempt the exercises to drill the idea immediately into my head.
- Obligatory Reuven plug, since I started up a new course :)
- Reuven is an awesome teacher.
- He takes the time, to explain stuff in painstaking detail, leaving nothing as an “exercise to the reader”.
- All of these courses, so far have been worth every single penny I spent on them.
Read all about my Python Objects journey here