# quelques définitions pour les tests ==>

def my_func(a: int, b: int):
    """ fonction sans classe """
    return a + b


def _my_private_func(a: int, b: int):
    """ fonction sans classe (non importée par défaut avec import *) """
    return a + b


class MyClass():
    """ classe pour tests """
    num = None

    def __init__(self, num):
        """ la classe est paramétrée """
        self.num = num

    def _protected_met(self, a: int, b: int):
        """ méthode standard (protected par convention) """
        return a + b

    class MySubClass():
        sub_num = None

        def __init__(self, num):
            """ la classe est paramétrée """
            self.sub_num = num

        @classmethod
        def sub_class_met(cls):
            """ méthode de classe """
            return True

        @staticmethod
        def sub_static_met():
            """ méthode statique """
            return True

        def sub_std_met():
            """ méthode standard """
            return True

    @classmethod
    def class_met(cls, a: int, b: int):
        """ méthode de classe """
        return a + b

    @staticmethod
    def static_met(a: int, b: int):
        """ méthode statique """
        return a + b

    def std_met(self, a: int, b: int):
        """ méthode standard """
        return a + b
