Petite incompréhension avec __dict__ et dir
Bonjour à tous,
voici un petit bout de code qui illustre un truc qui m'échappe :
Code:
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
| class Spam:
e_and,e_now,e_for,e_something,e_completely,e_different = xrange( 6 )
def value (self,name): # fonction ringarde qui fait ce que je veux
if name == 'and' : return self.e_and
if name == 'now' : return self.e_now
if name == 'for' : return self.e_for
if name == 'something' : return self.e_something
if name == 'completely' : return self.e_completely
if name == 'different' : return self.e_different
return -1
def auto_value (self,name): # fonction "classe", mais qui ne marche pas
return self.__dict__.get( 'e_'+name,-1 )
s = Spam()
print dir( s )
print s.__dict__
print s.value('for')
print s.value('eggs')
print s.auto_value('for')
print s.auto_value('eggs') |
affiche :
Code:
1 2 3 4 5 6
| ['__doc__', '__module__', 'auto_value', 'e_and', 'e_completely', 'e_different', 'e_for', 'e_now', 'e_something', 'value']
{}
2
-1
-1
-1 |
D'où mes questions :
Pourquoi y a-t-il une différence entre dir et __dict__ ?
Comment "instrospecter" les membres statiques ?
Pourquoi auto_value ne marche pas ?
Merci d'avance