CI n°2 – se créer ses propres objets

Bonjour ! Et bienvenue dans cette deuxième semaine.

Le support du jour :


ch3-1-tout-est-objet ch3-2-creer-son-propre-objetch3-3-1-creer-une-classech3-3-2-pas-compris-instancech3-3-4-c-est-qui-ce-self-1ch3-3-4-c-est-qui-ce-self-2ch3-4-1ch3-4-2ch3-5


Les exemples du cours et l’autre exemple développé en deuxième partie de cours :

class MaPremiereClasse:
        
    def __init__(self):
        print("constructeur de la classe MaPremierClasse")
        self.nombre = 42     # ajout de l’attribut nombre
        self.nom = "John"

# truc = MaPremiereClasse()

class Etudiant :
    """Cette classe permet de stocker des informations sur un.e etudiant.e

    Un.e etudiant.e est ici caracterise.e par :
    −> ses nom et prenom
    −> son age
    −> son numero d’etudiant.e
    −> son cursus """

    def __init__(self, prenom, nom, age, numero, cursus):
        """Constructeur de notre classe """
        self.nom = nom
        self.prenom = prenom
        self.age = age
        self.numero = numero
        self.cursus = cursus

from math import sqrt

class NombreComplexe:
    """Une classe exemple meme s’il existe un type complex"""

    def __init__(self, a, b):
        self.re = a
        self.im = b
        self.module = sqrt(a ** 2 + b ** 2)

class Personne:
    """Quelqu'un sur l'arbre généalogique

    Une personne, son genre, ses enfants, ses parents"""

    def __init__(self, prenom, nom, age, genre,
                 conj = None, enfants = None, parents = None):
        """Constructeur"""
        self.prenom = prenom
        self.nom = nom
        self.age = age
        self.genre = genre
        self.conj = conj
        if enfants is None:
            self.enfants = []
        else :
            self.enfants = enfants
        if parents is None:
            self.parents = []
        else :
            self.parents = parents
        
        
def affiche(p):
    print("\n", p.prenom, p.nom, "a", p.age, "ans")
    if p.conj is not None:
        print("En couple avec", p.conj.prenom, p.conj.nom)
    if len(p.enfants) > 0:
        print("Enfants :", end = '')
        for e in p.enfants:
            print(e.prenom, end = '\t')
        print()
    if len(p.parents) > 0:
        print("Parents :", end = '')
        for e in p.parents:
            print(e.prenom, end = '\t')
        print()

Et le shell correspondant

>>> moi = Personne("Christophe", "Marchant", 46, "masculin")
>>> moi.conj = Personne("Barbara", "Marchant", 37, "féminin")
>>> affiche(moi)

 Christophe Marchant a 46 ans
En couple avec Barbara Marchant
>>> affiche(moi.conj)

 Barbara Marchant a 37 ans
>>> moi.conj.conj
>>> moi.conj.conj = moi
>>> affiche(moi.conj)

 Barbara Marchant a 37 ans
En couple avec Christophe Marchant
>>> papa = Personne("Jean-Pierre", "Marchant", 73, "masculin")
>>> 
>>> maman = Personne("Nicole", "Marchant", 72, "feminin", papa)
>>> papa.conj = maman
>>> moi.parents
[]
>>> moi.parents =[maman, papa]
>>> affiche(moi)

 Christophe Marchant a 46 ans
En couple avec Barbara Marchant
Parents :Nicole	Jean-Pierre	
>>> papa.enfants += [moi]
>>> maman.enfants = papa.enfants
>>> papa.enfants += [Personne("Pierre", "Marchant", 49, "masculin", None, None, [papa, maman])]
>>> maman.enfants
>>> maman.enfants += [Personne("Marie", "Marvalin", 41, "féminin", None, None, [papa, maman])]
>>> affiche(moi)

 Christophe Marchant a 46 ans
En couple avec Barbara Marchant
Parents :Nicole	Jean-Pierre	
>>> affiche(papa)

 Jean-Pierre Marchant a 73 ans
En couple avec Nicole Marchant
Enfants :Christophe	Pierre	Marie	
>>> affiche(moi.conj)

 Barbara Marchant a 37 ans
En couple avec Christophe Marchant
		
>>> def fratrie(p):
	liste = []
	for e in p.parents:
		for k in e.enfants:
			if k not in liste and k is not p :
				liste += [k]
	return liste

>>> fratrie(moi)
[, ]
>>> for buddy in fratrie(moi):
	print(buddy.prenom, buddy.nom)

	
Pierre Marchant
Marie Marvalin

 

 

 

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.