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,
  1. we imported the class ("from boo import Boo") so the interpreter was aware of it,
  2. 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!")
  3. then we printed the object (the interpreter returned a default result "<Boo object at 20005f50>"),
  4. then we printed the type of the object ("print(type(b))")
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.')
Previous: MicroPython Tutorial Exercise 3: functions
Next: MicroPython Tutorial Exercise 5: using classes