Objects and classes: recap#
We have learned quite a bit of new stuff in Python! Let’s go over it again.
Classes are a way of naming types in Python.
Objects package code and data together; every Python object has a class.
You define a new class by writing
class Name(Base): ...
, whereName
is the name of your new class andBase
is its base class.So far,
object
is the only base class we’ve used.You can set a field on an object by saying
o.field = ....
You can read it by just writingo.field
.Putting a
__
before a field name marks it as private, and makes it hard to refer to.The body of a class definition contains method definitions.
The
__init__
method defines a constructor, i.e., an object that is a new instance of the class.Every method takes
self
as the first argument.You can define whatever other methods you want, in whatever order.
The
__str__
method says how to convert an object to a string for, e.g., printing.The
__repr__
method says how to convert an object to a string representation of the Python value.
Whew! That’s a lot of mechanism compared to, “here’s how to define a function and call it”. We’ll spend the rest of today looking at some of the object-oriented ecosystem in Python, with a focus on navigating the world and doing testing. OOP is complicated, but it also makes many hard things easier and some otherwise impossible things possible. (We won’t address it in this course, but OOP is a lynchpin technology for user interfaces.)