Classes and Methods#
This is Exercise 4 of the Micro Python Tutorial.
We can define classes in Python. Classes are defined globally, within the file/module as they begin in column 0.
Within a class its functions are called methods. Unlike functions, methods are defined within the scope of the class and are therefore indented within the class's block.
A class has a constructor, a special method named __init__. The constructor is called when you create a new object of the class. It can be said that the new object has a type of its class.
All special methods in Python are surrounded by double underscores. (There are more of these but we'll get to them later.)
boo.py
class Boo:
__init__(self):
print('boo!')
Now let's enter the Python REPL and use our new class:
/pyboard> repl Entering REPL. Use Control-X to exit. > MicroPython v1.25.0 on 2025-04-15; Raspberry Pi Pico with RP2040 Type "help()" for more information. >>> >>> from boo import Boo >>> b = Boo() boo! >>> >>> print(b) <Boo object at 20005f50> >>> >>> print(type(b)) <class 'Boo'> >>>
What did we do?
After creating a class named Boo,
motor_controller.py
from motor import Motor
class MotorController:
def __init__(self):
self.port_forward_motor = Motor('pfwd')
self.stbd_forward_motor = Motor('sfwd')
print('motor controller ready.')
motor.py
class Motor:
def __init__(self, name):
self.motor_name = name
self.motor_speed = 0
print('motor {} ready.'.format(self.motor_name))
def set_speed(self, speed):
self.motor_speed = speed
print("speed: {}".format(speed))
def get_speed(self):
return self.motor_speed
main.py
from motor_controller import MotorController
try:
motor_ctrl = MotorController()
except Exception as ex:
print('an error occurred: {}'.format(ex))
finally:
print('complete.')
- we imported the class ("from boo import Boo") so the interpreter was aware of it,
- then we instantiated (created an instance of) an object of the Boo class ("b = Boo()") and we assigned the object a name "b". Notice that when we created the object, the print line in Boo's constructor was executed ("boo!")
- then we printed the object (the interpreter returned a default result "<Boo object at 20005f50>"),
- then we printed the type of the object ("print(type(b))")
Previous: MicroPython Tutorial Exercise 3: functions
Next: MicroPython Tutorial Exercise 5: using classes