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 :

Hérité d'une fonction


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Points : 105
    Points
    105
    Par défaut Hérité d'une fonction
    Bonsoir.

    Peut-on hériter d'une fonction, ou plus exactement se comporter comme une fonction à l'instanciation d'une classe ?
    La seule manière de faire cela, que je vois à priori, serait de mettre le code dans __new__, en recrachant la valeur traité mais sans instance de l'objet (je ne trouve pas cela très joli-joli). Une autre manière serait peut-être de jouer avec les metaclass.

    Il y a quelques semaines, j'avais voulu faire cela. Pourquoi ? Je ne m'en souviens plus du tout malheureusement, mais j'avais, je pense, une bonne raison de vouloir le faire. Sûrement pour utiliser les attributs de classes.
    En tout cas, cette question me turlupinait et elle continue à le faire. Alors ? Peut-on hériter de l'objet function en Python ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Par défaut, impossible de s/classer (hériter) les objets tels que instances, modules, fonctions,... Python permet toujours de bricoler un truc mais il faut savoir ce qu'on veut faire et voir les alternatives plus simples.
    Il y a quelques semaines, j'avais voulu faire cela. Pourquoi ? Je ne m'en souviens plus du tout malheureusement, mais j'avais, je pense, une bonne raison de vouloir le faire. Sûrement pour utiliser les attributs de classes.
    S'il s'agit d'associer des attributs à une fonction, pas besoin qu'elle soit "class"!
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> def func():
    ...     if hasattr(func, 'count'):
    ...        func.count += 1
    ...     else:
    ...        func.count = 1
    ...     print(func.count)
    ...
    >>> func()
    1
    >>> func()
    2
    - W
    PS: Avec Python, il est rare d'avoir besoin de "magie" particulière.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Points : 105
    Points
    105
    Par défaut
    Merci de la réponse. En gros, il est vain de vouloir hériter d'un mot clé python. Hériter de def serait comme hériter de class.
    On peut hériter de type ou de object par exemple, mais pas directement de class, ce qui est quand même logique car cela touche à la mécanique "profonde" de python. Et du coup, ce ne serait plus du python mais un nouveau langage.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par Sekigo Voir le message
    Et du coup, ce ne serait plus du python mais un nouveau langage.
    Un langage qui donne du sens à l'héritage entre objets aussi simples que des fonctions serait effectivement une "nouveauté"...
    Comme je n'en vois pas trop l'intérêt, çà risque de ne pas être de si tôt.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  2. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48
  3. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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