Bonjour.
Bon, je suis tout nouveau en Python (une semaine) et en pleine lecture des bouquins de W. J. Chun (au coeur de Python en 2 volumes.
Il me semble qu'on peut écrire ça (code en dessous) par contre je ne sais, ni si c'est pythonique comme vous dites, ni s'il y a des contres indications vu le peux de connaissances de python que j'ai.
Le code me permet bien d'acceder à mes instances des objets, mc2, mc2bis et mc4 par contre il ne gere pas le fait que mc2 et mc2bis sont des alias (il faudrait rajouter des choses)
(Il y a aussi un test pour tester le type de classe au milieu qui doit pouvoir être plus jolie, ainsi que quelques print qui trainent).
Comme se sont mes débuts, si des choses ne sont pas ou pas assez correcte vous pouvez le dire (je sais qu'il y a l'affectation des valeurs par défaut aussi dans l'appel d'une méthode, mais c'était des tests).
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 #-*- coding: utf-8 -*- ''' Created on 24 août 2009 @author: Pierre ''' import sys import psyco from inspect import currentframe class C1(object): def m1(self): print "Ici C1m1" class C2(C1): def __init__(self): self.c2val1 = 8 self.c2val2 = 'Bonjour' def m1(self): print "Ici C2m1" C1.m1(self) if __name__ == '__main__' : print 'Main ici debut' mc1 = C1() mc1.m1() mc2 = C2() mc2.m1() mc4 = C2() mc4.c2val1 = 19 mc4.c2val2 = 'Au revoir' mc2bis = mc2 frame = currentframe() for n_var in frame.f_locals.keys(): # Dessous pas beau, il doit y avoir un autre moyen s = str(type(frame.f_locals[n_var])) if s.find('__main__.C2') >= 0 : lobj = frame.f_locals[n_var] print "*********************************************************************************************" print n_var print lobj.c2val1 print lobj.c2val2 print "*********************************************************************************************"
Partager