class Person(object): """ Classe représentant une personne. """ nom: str = None prenom: str = None age: int = None def __init__(self, *_args, **kwargs): """ Initialiser les valeurs d'une nouvelle personne. Args: *_args: Liste d'arguments non positionnels **kwargs: Arguments nommés, utilisés pour initialiser les attributs de notre objet. """ self.nom = kwargs.get("nom", None) self.prenom = kwargs.get("prenom", None) self.age = kwargs.get("age", None) def set_nom_complet(self, nom, prenom): """ Méthode pour définir les noms et prénom de l'individu. Args: nom: Nom de famille à attribuer prenom: Prénom à attribuer à l'objet """ self.prenom = prenom self.nom = nom def get_nom_complet(self): """ Méthode pour retrouver d'un coup le nom complet de l'individu. Returns: Nom complet, sous la forme " " """ if self.prenom and self.nom: return f"{self.prenom} {self.nom}" else: return "Nom complet non renseigné" class Professional(Person): """ Classe représentant un professionel, héritant de `Person`. """ telephone_pro: str = None job: str = None def __init__(self, *_args, **kwargs): """ Initialiser les données d'un nouveau professionel. On peut également initialiser le prénom, nom et âge. Args: *_args: Liste d'arguments non positionnels **kwargs: Liste d'arguments nommés, utilisés pour initialiser les attributs de notre objet. """ super().__init__(*_args, **kwargs) self.telephone_pro = kwargs.get("telephone_pro", None) self.job = kwargs.get("job", None) def get_nom_complet(self): """ Méthode pour retrouver d'un coup le nom complet de l'individu. Returns: Nom complet, sous la forme " " """ base_nom = super().get_nom_complet() return f"{base_nom} ({self.job})" if __name__ == "__main__": # Ici on se crée plusieurs objets, 2 professionnels et une personne pro1 = Professional(nom="Mario", prenom="Mario", age=38, telephone_pro="0799999999", job="Jardinier") pro2 = Professional(nom="Mario", prenom="Luigi", age=37, telephone_pro="0799999999", job="Plombier") mec = Person(nom="Bertrand", prenom="Julien", age=30) # Les deux classe Person et Professional ont des méthodes `get_nom_complet()` différentes, tester print(mec.get_nom_complet()) print(pro1.get_nom_complet())