Skip to content
Snippets Groups Projects
Select Git revision
  • d6f35c05c2c8c21580c5b6a5f464f1f94c5fc90b
  • main default protected
2 results

etudiant.py

Blame
  • etudiant.py 2.78 KiB
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    """
    :author: FIL - FST - Univ. Lille.fr <http://portail.fil.univ-lille.fr>_
    :date: janvier 2019
    :last revised: 
    :Fournit :
    """
    from date import Date
    
    
    class Etudiant:
        """
        une classe représentant des étudiants.
    
        $$$ etu = Etudiant(314159, 'Oléon', 'Tim', Date(7, 11, 2004), 'MI', '15')
        $$$ str(etu)
        'Tim Oléon'
        $$$ repr(etu)
        "Etudiant(314159, 'Oléon', 'Tim', Date(7, 11, 2004), 'MI', '15')"
        $$$ etu.prenom
        'Tim'
        $$$ etu.nip
        314159
        $$$ etu.nom
        'Oléon'
        $$$ etu.formation
        'MI'
        $$$ etu.groupe
        '15'
        $$$ etu2 = Etudiant(314159, 'Oléon', 'Tim', Date(7, 11, 2004), 'MI', '15')
        $$$ etu == etu2
        True
        $$$ etu3 = Etudiant(141442, 'Oléon', 'Tim', Date(7, 11, 2004), 'MI', '15')
        $$$ etu == etu3
        False
        $$$ etu4 = Etudiant(141442, 'Calbuth', 'Raymond', Date(2, 1, 2005), 'MI', '11')
        $$$ etu < etu4
        True
        $$$ isinstance(etu.naissance, Date)
        True
        """
        from date import Date
        def __init__(self, nip: int, nom, prenom,
                     naissance: Date, formation: str, groupe: str):
            """
            initialise un nouvel étudiant à partir de son nip, son nom, son
            prénom, sa formation et son groupe.
    
            précondition : le nip, le nom et le prénom ne peuvent être nuls ou vides.
            """
            self.nip = nip
            self.nom = nom
            self.prenom = prenom
            self.naissance = naissance
            self.formation = formation
            self.groupe = groupe
            
    
        def __eq__(self, etudiant) -> bool:
            """
            Renvoie True ssi other est un étudiant ayant :
            - même nip,
            - même nom et
            - même prénom que `self`,
            et False sinon.
            """
            if isinstance(etudiant,Etudiant):
                return etudiant.nom  == self.nom and self.prenom==etudiant.prenom and self.nip == etudiant.nip
        
        def __lt__(self, other) -> bool:
            """
            Renvoie True si self est né avant other
            """
            if not (self.prenom < other.prenom and self.nom < other.nom and (self.Date < other.Date) and (self.naissance < other.naissance) and (self.nip < other.nip) and (self.formation < other.formation)):
                return True
            return False
        
    
        def __str__(self) -> str:
            """
            Renvoie une représentation textuelle de self pour impression.
            """
            return f"{self.prenom} {self.nom}"
    
        def __repr__(self) -> str:
            """
            Renvoie une représentation textuelle interne de self pour le shell.
            """
            return f"Etudiant({self.nip}, '{self.nom}', '{self.prenom}', {repr(self.naissance)}, '{self.formation}', '{self.groupe}')"
        
        
        
        
    
    
    if (__name__ == "__main__"):
        import apl1test
        apl1test.testmod('etudiant.py')