!!! Classes and Methods %%info 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. %%filename boo.py %% %%python {{{ class Boo: __init__(self): print('boo!') }}} %% %%repl {{{ /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'> >>> }}} %%info __What did we do?__ After creating a class named Boo, 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 and we assigned the object a name "b". 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))". %% All special methods in Python are surrounded by double underscores. (There are more of these but we'll get to them later.) %%filename motor_controller.py %% %%python {{{ 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.') }}} %% %%filename motor.py %% %%python {{{ 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 }}} %% %%filename main.py %% %%python {{{ 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|MicroPythonTutorialExercise03]: functions \\ __Next:__ [MicroPython Tutorial Exercise 5|MicroPythonTutorialExercise05]: using classes