IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Utiliser la même fonction dans différentes Class [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Septembre 2021
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2021
    Messages : 55
    Par défaut Utiliser la même fonction dans différentes Class
    Bonjour à tous,

    Comme le dit le titre, j'ai une propriété de classe que je souhaite dupliquer dans plusieurs autres et je ne trouve pas de façons de le faire.

    Pour être plus clair j'ai ce genre de script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class premiereClasse():
        #contenu
     
        def functionUniverselle(self):
            #contenu de la fonction
     
    class secondeClasse():
        #contenu
     
        def functionUniverselle(self):
            #contenu de la fonction
     
    class troisiemeClasse():
        #contenu
     
        def functionUniverselle(self):
            #contenu de la fonction
    Je souhaiterais n'avoir à écrire ma fonctionUniverselle(self) qu'une seule fois et ensuite l'appeler simplement dans chaque classe nécessaire.

    Est-ce possible ?
    Merci d'avance

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour

    pas assez de détail pour bien répondre, mais l'héritage sert justement à cela
    "premiereClasse" pourrait être une classe abstraite ?

    ps: existe aussi les méthodes de classes (utile ici ?)

  3. #3
    Membre confirmé
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Septembre 2021
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2021
    Messages : 55
    Par défaut
    Citation Envoyé par papajoker Voir le message
    bonjour

    pas assez de détail pour bien répondre, mais l'héritage sert justement à cela
    "premiereClasse" pourrait être une classe abstraite ?
    Merci pour la réponse,

    Je n'ai pas de classe abstraite, ce sont des classes python tout à fait classiques si je peux dire.
    Comment fonctionnerait l'héritage exactement ?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2020
    Messages : 11
    Par défaut
    Tu aurais tout simplement une classe mère de "premiereClasse", "deuxiemeClasse" et "troisiemeClasse" qui définirait la fonction que tu souhaites retrouver dans tes trois classes. De cette manière, toutes tes classes partageraient la même fonction définie dans la classe mère. C'est la base de la POO, tu trouveras tout ce qu'il te faut en quelques minutes de recherche sur notre cher internet au sujet de l'héritage.

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Citation Envoyé par ptrs32 Voir le message
    Je n'ai pas de classe abstraite, ce sont des classes python tout à fait classiques si je peux dire.
    D'où mon point d'interrogation, tu utilises ou non des classes abstraites, tout dépend de ton besoin/architecture. Utiliser l'héritage est justement une chose classique.
    Citation Envoyé par ptrs32 Voir le message
    Comment fonctionnerait l'héritage exactement ?
    pas compris la question , tu n'as jamais lu un tuto python sur l'objet ? l'héritage est une chose plus que classique et que le "parent" soit abstrait ou non ne change strictement rien.

    une classe abstraite signifie uniquement que c'est une classe que nous n'utiliserons jamais directement, elle ne sert que pour l'héritage, elle n'existe que pour partager une fonctionnalité entre plusieurs classes.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par ptrs32 Voir le message
    Je n'ai pas de classe abstraite, ce sont des classes python tout à fait classiques si je peux dire.
    Hum... un certain manque flagrant de connaissances POO... C'est pas grave, on n'en a pas besoin ici

    Citation Envoyé par ptrs32 Voir le message
    Comment fonctionnerait l'héritage exactement ?
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    # Classe de base
    class premiereClasse():
    	# Constructeur première classe
    	def __init__(self, ...)
    		# contenu
     
    	def functionUniverselle(self):
    		# contenu de la fonction
     
    # Seconde classe qui hérite de la première (elle récupère toutes ses propriétés et méthodes) mais sert à faire des trucs en plus 
    class secondeClasse(premiereClasse):
    	# Constructeur seconde classe
    	def __init__(self, ...)
    		# On commence par appeler le constructeur de la classe dont on hérite (certains langages tels le C++ le font automatiquement, pas Python)
    		super().__init__(self, ...)
    		# contenu de ce qui est fait en plus
     
    	# Pas besoin de fonction universelle si elle ne fait rien de plus, on en hérite automatiquement (c'est ça l'héritage)
     
    # Troisième classe qui hérite de la seconde (elle récupère toutes ses propriétés et méthodes) et sert là encore à faire des trucs en plus 
    class troisiemeClasse(secondeClasse):
    	# Constructeur troisième classe
    	def __init__(self, ...)
    		# On commence par appeler le constructeur de la classe dont on hérite
    		super().__init__(self, ...)
    		# contenu de ce qui est fait en plus
     
    	# La fonction universelle (qui fera comme celle dont on hérite mais avec des trucs en plus)
    	def functionUniverselle(self):
    		# On commence par appeler la fonction universelle dont on hérite
    		super().functionUniverselle(self)
    		# contenu de la suite de cette fonction plus particulière
     
    base=premiereClasse(...)
    base.functionUniverselle()	# Appel fonction universelle première classe
     
    second=secondeClasse(...)
    second.functionUniverselle()	# Appel fonction universelle seconde classe (qui est donc celle de la première puisque la seconde classe en hérite et n'en a pas définie d'autre)
     
    third=troisiemeClasse(...)
    third.functionUniverselle()	# Appel fonction universelle troisième classe (qui fera le travail de la seconde (ie de la première donc) plus ses trucs à elle)

    Ou alors la fonction universelle n'est pas associée à une classe et devient une vraie fonction indépendante, qui pourra donc être appelée depuis (ou plutôt "avec") n'importe quel objet (et dans ce cas, plus besoin ni d'héritage ni même d'objet)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre confirmé
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Septembre 2021
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2021
    Messages : 55
    Par défaut
    Citation Envoyé par Aiveriwhair Voir le message
    C'est la base de la POO, tu trouveras tout ce qu'il te faut en quelques minutes de recherche sur notre cher internet au sujet de l'héritage.
    Citation Envoyé par papajoker Voir le message
    ... tu n'as jamais lu un tuto python sur l'objet ? l'héritage est une chose plus que classique et que le "parent" soit abstrait ou non ne change strictement rien.
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Hum... un certain manque flagrant de connaissances POO... C'est pas grave, on n'en a pas besoin ici
    C'est drôle comme vous les "séniors" en programmation sur les forums vous adorez le passif-agressif quand vous répondez à des débutants. Une façon de montrer votre supériorité, ou un peu de sadisme sous-jacent qui sait ? Ça m'étonne toujours puisque logiquement si la question vous énerve autant laissez quelqu'un d'autre y répondre. Enfin bon..

    Je vous remercie pour vos réponses qui ne me font pas du tout regretter de l'avoir poser ici et me réconfortent dans mes compétences en Python.

    Je vais donc faire une classe abstraite avec mes fonctions récurrentes et gérer l'héritage dans les différentes classes.

    Bonne journée

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2020
    Messages : 11
    Par défaut
    Premièrement je ne vois pas le passif-agressif dans ma réponse mais passons. Je pense que ton message a donné l'impression que tu n'as pas fait la moindre recherche avant de poser ta question sur le forum et ce n'est pas vraiment l'esprit des forums info. C'est d'ailleurs pour cela que je t'ai donné une piste et pas du code prémâché ! Si, contrairement à ce que ton message laissait penser tu as bel et bien chercher une solution a ton problème avant de poster, je suis désolé pour mon ton "passif-agressif".

    Belle fin de journée.

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ptrs32 Voir le message
    C'est drôle comme vous les "séniors" en programmation sur les forums vous adorez le passif-agressif quand vous répondez à des débutants.
    Tu n'y es pas. Ce n'est pas ton état de débutant qui est en cause (on l'a tous été), c'est le fait que tu n'aies pas fait l'effort préalable de lire un tutoriel, préférant recevoir l'information toute cuite dans le bec plutôt que d'y arriver naturellement quand tu arrives à ce chapitre en ayant donc lu (et généralement assimilé) les précédents.

    Citation Envoyé par ptrs32 Voir le message
    Une façon de montrer votre supériorité, ou un peu de sadisme sous-jacent qui sait ?
    Balade-toi dans le forum (ici ou d'autres), tu verras que les débutants qui montrent qu'ils ont fait un certain effort préalable avant de venir poser leur question sont traités différemment...

    Toutefois de mon côté, je remarque que généralement, les débutants qui s'offusquent de cet accueil (mérité) sont généralement les plus instruits. Toi tu es ingénieur d'études cliniques, mais on a eu d'autres ingénieurs en tout genre, généralement tous aussi vexés qu'on leur dise que Python, comme tout le reste, ça commence par s'apprendre. C'est peut-être aussi une façon (plus subtile) de montrer leur supériorité en sous-entendant implicitement que la programmation en général (ou alors juste Python en particulier) n'est pas digne de leur niveau, sous-domaine tellement peanut qu'on peut l'assimiler par capilarité.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une même fonction dans plusieurs fonctions
    Par EE dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/11/2018, 19h47
  2. Utilisation d'un objet dans différentes classes
    Par snyler dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 29/10/2014, 11h09
  3. utiliser les mêmes variable dans plusieurs class
    Par hterrolle dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2007, 21h11
  4. Réponses: 10
    Dernier message: 08/02/2007, 13h18
  5. Réponses: 4
    Dernier message: 07/03/2006, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo