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 :

surcharge methode d'un attribut


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 24
    Points
    24
    Par défaut surcharge methode d'un attribut
    bonjour,
    je souhaiterai surcharger la methode __add__ mais pas de ma classe, mais d'un attribut de ma classe. Pour cela, me direz-vous, il faut créer un classe de cet attribut, mais ce n'est pas très pratique.
    J'explique :
    ma classe ressemble en gros a ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class tas(object):
          def __init__(self,liste):
                 self.tab=liste
                 self.taille=len(liste)
    De plus, je voudrai, en faisant t.taille+=1 (où t est une instance de tas), que t.tab initialise un nouvel élément (None par ex, on s'en fiche) en fin de liste.
    Il faut donc surcharger la methode __add__ de self.taille mais dans laquelle self.tab serait accessible su type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int.__add__(self,1)
    self.tab.append(None)
    je pense mettre bine fait comprendre, mais si ce n'est pas clair, demandez moi de préciser!
    merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Le plus simple est de transformer l'attribut en "property", voici un exemple:
    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
    19
    20
    21
    22
    23
    24
    >>> class tas(object):
    ... 	def __init__(self, liste):
    ... 		self.tab = liste
    ... 		self._taille = len(liste)
    ... 	def get_taille(self):
    ... 		return self._taille
    ... 	def set_taille(self, value):
    ... 		if value > self._taille:
    ... 			self.tab.extend([None]*(value-self._taille))
    ... 		else:
    ... 			del self.tab[value:]
    ... 	taille = property(get_taille, set_taille)
    ... 	
    >>> t = tas([1,2,3])
    >>> t.tab
    [1, 2, 3]
    >>> t.taille
    3
    >>> t.taille += 1
    >>> t.tab
    [1, 2, 3, None]
    >>> t.taille = 2
    >>> t.tab
    [1, 2]

Discussions similaires

  1. Generic Vs Surchargement methode
    Par soony dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/04/2009, 21h14
  2. surcharge methode et instance de classe
    Par julien25 dans le forum C++
    Réponses: 6
    Dernier message: 13/03/2009, 21h20
  3. application methode Muench sur attributs d'un noeud
    Par DaMNeO dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/06/2008, 15h49
  4. [Générics] Surcharge methode invalide
    Par MrDuChnok dans le forum Langage
    Réponses: 10
    Dernier message: 23/07/2007, 17h29
  5. method avec plusieurs attributs
    Par *alexandre* dans le forum JSF
    Réponses: 1
    Dernier message: 03/08/2006, 11h42

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