[debutant] une classe statique en python

une classe statique en python [debutant] - Python - Programmation

Marsh Posté le 10-05-2004 à 15:53:19    

bjour a tous,
 
je voudrais savoir s'il est possible de bénéficier de l'équivalent des classes/variables statiques en python ?
 
J'ai besoin de pouvoir accéder à la valeur par défaut d'une variable d'une de mes classes sans toutefois instancier celle ci .....
 
J'essaie de faire qqchose de ce genre :
 

Code :
  1. from monModule import MaClasse
  2. class Test:
  3.    ...
  4.    def getValeur(self):
  5.       print MaClasse.MaVariable


 
davance merci!
++
vince

Reply

Marsh Posté le 10-05-2004 à 15:53:19   

Reply

Marsh Posté le 10-05-2004 à 15:57:59    

Aaargh ça y est jai trouvé ...
 
pour ceux que ça intéresse:
http://www.python.org/2.2/descrint [...] ticmethods

Reply

Marsh Posté le 10-05-2004 à 16:08:55    

bon en fait, mon pb n'est qu'à moitié résolu:  
comment créer une variable statique  :cry:

Reply

Marsh Posté le 10-05-2004 à 16:09:18    

Note qu'il est conseillé de passer aux nouvelles classes. Il y a des trucs qui ne marchent pas avec les anciennes.
 
Pour cela, il suffit de faire :

Code :
  1. class Test(object):
  2. # au lieux de
  3. class Test:


 
Les variables statiques se font tres simplement elles :

Code :
  1. class Test(object):
  2.     variable_statique = 5


Message édité par Kristoph le 10-05-2004 à 16:10:01
Reply

Marsh Posté le 10-05-2004 à 16:16:50    

bon, je ne m'en sors tjrs pas, voici mon code:
 

Code :
  1. class BlockedMode(object,Request):
  2.   TAGVALUE="blocked_mode"
  3.   def __init__(self):
  4.     Request.__init__(self)
  5.     ...
  6.   def getTagValue():
  7.     return TAGVALUE
  8.   getTagValue=staticmethod(getTagValue)


 
>>> from BlockedModeRequest import BlockedMode
>>> BlockedMode.getTagValue()
--> NameError: global name 'TAGVALUE' is not defined

Reply

Marsh Posté le 10-05-2004 à 16:28:50    

pi3r a écrit :

bon, je ne m'en sors tjrs pas


 
C'est normal car pour acceder à TAGVALUE, il faut écrire BlockedMode.TAGVALUE
 

Code :
  1. class BlockedMode(object,Request):
  2.   TAGVALUE="blocked_mode"
  3.   def __init__(self):
  4.     Request.__init__(self)
  5.     ...
  6.   def getTagValue():
  7.     return BlockedMode.TAGVALUE
  8.   getTagValue=staticmethod(getTagValue)


Message édité par Kristoph le 10-05-2004 à 16:29:00
Reply

Marsh Posté le 10-05-2004 à 16:31:57    

Kristoph a écrit :

Note qu'il est conseillé de passer aux nouvelles classes. Il y a des trucs qui ne marchent pas avec les anciennes.
 
Pour cela, il suffit de faire :

Code :
  1. class Test(object):
  2. # au lieux de
  3. class Test:


 
Les variables statiques se font tres simplement elles :

Code :
  1. class Test(object):
  2.     variable_statique = 5


 


c'ets quoi ces nouvelles classeS?

Reply

Marsh Posté le 10-05-2004 à 16:33:12    

super, ça marche !
merci kris  :jap:

Reply

Marsh Posté le 10-05-2004 à 16:40:14    

chaica a écrit :

c'ets quoi ces nouvelles classeS?


 
Ca fait partie de l'unification des types. Cela inclue aussi la gestion des setter et des getter et une correction dans le comportement de la resolution des noms dans l'heritage multiple.
 
Il parrait aussi que les perfs sont un peu meilleures :)
 
Enfin, tout est expliqué ici : http://www.python.org/2.2/descrintro.html

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed