Le topic de l'assistanat Informatique
Modérateur : DojoSuperHeroes
- Zwarf
- Super Mario Sunshine
- Messages : 6332
- Inscription : 30 mai 2004 13:45
- Localisation : Bayonne
PareilAnth128 a écrit :Tu as essayé de mettre le tel en silencieux ? Sur mon Nokia (même si c'est pas la même marque), je peux pas enlever le son quand je prends une photo en mode normal, mais quand le tel est en mode silencieux, y'a plus le son.



-
- Robot
- Messages : 8641
- Inscription : 29 janv. 2006 21:27
Question pour les pros du Python du forum.
J'ai plusieurs fonctions qui se ressemblent mais dont la seule différence est le nom de la méthode que j'utilise, sachant que j'utilise des objets de classes différentes mais portant toutes les mêmes noms de méthodes qui m'intéressent. Les méthodes sont toutes du type "def method(self): etc..." (donc prenant un seul argument qui est l'objet lui-même) et renvoient un booléen.
J'ai écrit une fonction qui prend le nom de la méthode en paramètre du style :
Ca fonctionne mais la condition me semble barbare vu tous les appels et je n'ai rien trouvé de mieux et optimisé. Donc si vous savez... 
J'ai plusieurs fonctions qui se ressemblent mais dont la seule différence est le nom de la méthode que j'utilise, sachant que j'utilise des objets de classes différentes mais portant toutes les mêmes noms de méthodes qui m'intéressent. Les méthodes sont toutes du type "def method(self): etc..." (donc prenant un seul argument qui est l'objet lui-même) et renvoient un booléen.
J'ai écrit une fonction qui prend le nom de la méthode en paramètre du style :
Code : Tout sélectionner
def f(method):
etc...
for k in xrange(..,..):
e = liste[k]
if e.__class__.__dict__[method](e):
truc

blabla
- egg
- Super Mario World
- Messages : 1896
- Inscription : 13 sept. 2004 17:20
- Localisation : France
-
- Robot
- Messages : 8641
- Inscription : 29 janv. 2006 21:27
Non.
La liste est en effet composée d'objets de classes différentes mais chaque classe comporte une méthode du nom "method" (qui est un paramètre), ce qui fait que j'exécute des méthodes différentes mais qui portent juste le même nom (car elles ont la même utilité mais ne fonctionnent pas de la même façon, il y a surtout des notions d'héritages et de redéfinitions).
Ce qui fait par exemple que j'aurai 3 méthodes booléennes "methode1", "methode2", "methode3", et j'ai juste à exécuter :
qui sont 3 programmes différents, qui fonctionnent à peu près de la même façon sauf qu'ils n'appellent pas la même méthode des objets de la même liste.
La liste est en effet composée d'objets de classes différentes mais chaque classe comporte une méthode du nom "method" (qui est un paramètre), ce qui fait que j'exécute des méthodes différentes mais qui portent juste le même nom (car elles ont la même utilité mais ne fonctionnent pas de la même façon, il y a surtout des notions d'héritages et de redéfinitions).
Ce qui fait par exemple que j'aurai 3 méthodes booléennes "methode1", "methode2", "methode3", et j'ai juste à exécuter :
Code : Tout sélectionner
f("methode1")
f("methode2")
f("methode3")
blabla
- Le poussin
- Super Mario Bros. 3
- Messages : 824
- Inscription : 19 janv. 2004 00:37
- Localisation : Sur Paris
Si les méthodes sont semblables, tu peux les réunir dans une liste et passer en paramètre un indice de méthode plutôt qu'un nom.
Dans tous les cas, dans ton code tu devrais pouvoir te passer du __class__ :
Après, pour pouvoir faire vraiment différemment il faudrait en savoir un peu plus sur le contexte de l'appel des méthodes, quand est-ce que "f" est appellée, etc. (pour peut-être procéder de manière totalement différente).
Code : Tout sélectionner
class C1:
def m0(self):
...
def m1(self):
...
methods = (m0, m1)
...
def f(m):
for k in xrange(...):
e = objs[k]
if e.methods[m](e):
...
Code : Tout sélectionner
e.__dict__[method](e):
-
- Robot
- Messages : 8641
- Inscription : 29 janv. 2006 21:27
Oui, mais ce n'est qu'un détail. Ce n'est pas l'intérêt de ce que je fais.Le poussin a écrit : Si les méthodes sont semblables, tu peux les réunir dans une liste et passer en paramètre un indice de méthode plutôt qu'un nom.
Non justement, ça ne passe pas (je l'avais déjà testé). Je suis obligé de passer par la classe sinon je n'obtiens pas les méthodes.Le poussin a écrit : Dans tous les cas, dans ton code tu devrais pouvoir te passer du __class__ :Code : Tout sélectionner
e.__dict__[method](e):
blabla
- egg
- Super Mario World
- Messages : 1896
- Inscription : 13 sept. 2004 17:20
- Localisation : France
et pourquoi pas :
Code : Tout sélectionner
def f(toto):
if toto(e):
truc
f(obj.methode1)
f(obj.methode2)
f(obj.methode3)

Spoiler:
Spoiler:
Spoiler:
Spoiler:
Dernière modification par egg le 27 févr. 2009 23:37, modifié 1 fois.
-
- Robot
- Messages : 8641
- Inscription : 29 janv. 2006 21:27
Bah non, puisque même si ton code fonctionnait, ça t'obligerait à utiliser la méthode d'une classe en particulier, or je veux utiliser des méthodes de classes différentes suivant la classe de l'objet dans la liste.egg a écrit :f(obj.methode1)
f(obj.methode2)
f(obj.methode3)
Enfin je ne comprends pas trop ton code.

Enfin bon, de toute façon je n'ai pas trouvé mieux sur le net, et on dirait que c'est la chose à faire. Merci quand même.

blabla
- Dhalsim
- noob
- Messages : 2154
- Inscription : 13 avr. 2003 19:51
- Localisation : A la maison !
Allez c'est reparti pour une "einième" question dans ce topic de ma part...
"Missing Operating System" est le message qui s'affiche à l'allumage de mon portable depuis hier, j'ai tenté une réparation system, voire une restauration system, mais le plus flippant outre que ça ne marche pas, c'est qu'il n'y a aucune "partition" que je puisse choisir !!!
Du coup on me demande de formater au préalable mon DD !!
Vu que c'est le quatrième plantage en 14 mois je souhaiterais savoir :
- Est-ce dû à Vista ?
- Ou mon DD est peu fiable donc autant en racheter un ?
(C'est ce que je souhaitais faire ce matin !
)
"Missing Operating System" est le message qui s'affiche à l'allumage de mon portable depuis hier, j'ai tenté une réparation system, voire une restauration system, mais le plus flippant outre que ça ne marche pas, c'est qu'il n'y a aucune "partition" que je puisse choisir !!!
Du coup on me demande de formater au préalable mon DD !!

Vu que c'est le quatrième plantage en 14 mois je souhaiterais savoir :
- Est-ce dû à Vista ?
- Ou mon DD est peu fiable donc autant en racheter un ?
(C'est ce que je souhaitais faire ce matin !

Spoiler:
- Le poussin
- Super Mario Bros. 3
- Messages : 824
- Inscription : 19 janv. 2004 00:37
- Localisation : Sur Paris
J'ai été confronté à un cas similaire aujourd'hui, et j'ai trouvé une autre manière de faire, moins lourde et plus "sûre" puisqu'elle fonctionne même si la méthode n'est pas définie au niveau de la classe :Urd a écrit :Ca fonctionne mais la condition me semble barbare vu tous les appels et je n'ai rien trouvé de mieux et optimisé. Donc si vous savez...Code : Tout sélectionner
if e.__class__.__dict__[method](e):
Code : Tout sélectionner
if getattr(e, method)():
-
- Super Mario Odyssey
- Messages : 19725
- Inscription : 24 nov. 2003 21:47
- Localisation : Dans les latrines
Je me suis decidé a acheter un cable antenne pour enfin avoir les chaines d ela tnt sur le plasma mais la moitié des chaines passent mal et c'est iregardable
C'est normal ce genre de probleme ?
Le seul moyen pour que ca marche c'est de reorienter l'antenne sur le toit ?
C'est vraiment naze la tnt
EDIT: bon en fait j'ai exageré, y'a "que" M6 W9 et NT1 qui passent pas (et arte hd, mais c'est normal vu que nice est pas encore couvert pour la tnt hd)
Ca fait quand meme chier vu que je matte pas mal ces deux chaines pour les programmes a la con et le foot.
REDIT:
apres un peu d erecherche :

C'est normal ce genre de probleme ?
Le seul moyen pour que ca marche c'est de reorienter l'antenne sur le toit ?
C'est vraiment naze la tnt

EDIT: bon en fait j'ai exageré, y'a "que" M6 W9 et NT1 qui passent pas (et arte hd, mais c'est normal vu que nice est pas encore couvert pour la tnt hd)
Ca fait quand meme chier vu que je matte pas mal ces deux chaines pour les programmes a la con et le foot.
REDIT:
apres un peu d erecherche :
Je capte donc mal toutes les chaines de ce canal, y'a une solution ou je suis baisé ?R4: 49H 470W = M6 SD , W9 , NT1 et ARTE HD + les programmes en clair de PARIS PREMIERE.
- Valentine Rose
- Super Princess Peach
- Messages : 11327
- Inscription : 07 sept. 2003 19:32
- Localisation : Dijon
-
- Super Mario Odyssey
- Messages : 19725
- Inscription : 24 nov. 2003 21:47
- Localisation : Dans les latrines
Je suis chez orange et l'offre tv est vraiment pas top. Y'a aucune chaine hd et le decodeur fait bcp de bruit avec son ventillo. En plus j'ai pas de cable peritel assez long et ca me soule e racheter un cable alors que je viens de payer un cable antenne expres pour pecho la tnt.
C'est vraiment con ces problemes avec M6 NT1 et W9. Ils auraient pas pu mettre des chaines a la con genre itv, la chaine parlementaire gulli, virgin 17
C'est vraiment con ces problemes avec M6 NT1 et W9. Ils auraient pas pu mettre des chaines a la con genre itv, la chaine parlementaire gulli, virgin 17

- Valentine Rose
- Super Princess Peach
- Messages : 11327
- Inscription : 07 sept. 2003 19:32
- Localisation : Dijon
-
- Super Mario Odyssey
- Messages : 19725
- Inscription : 24 nov. 2003 21:47
- Localisation : Dans les latrines
- rom vat
- Shigeru Miyamoto
- Messages : 13150
- Inscription : 24 nov. 2002 01:18
- Localisation : Dans l'ouest
Quand on pense qu'on va passer au tout TNT dans quelque temps
. Je ne sais pas quelle est l'étendue des problèmes, mais j'ai déjà entendu pas mal de personnes se plaindre que ça ne marchait pas parfaitement, même dans des aires urbaines. En plus, même dans les zones couvertes, si on est dans un immeuble qui a recours à noos et qu'on ne veut pas louer un décodeur (pas un décodeur TNT, un décodeur propriétaire noos), pas moyen de profiter de ces nouvelles chaînes
. Je trouve que ce n'est pas très bien géré, et j'ai peur que ce soit encore pire quand la radio va passer au numérique.
Plus généralement, je n'aime pas du tout le principe de supprimer une technologie qui fonctionne pour en imposer une nouvelle : si la nouvelle est vraiment meilleure, elle devrait s'imposer d'elle-même
(comme ça va aussi être le cas pour les ampoules en septembre prochain...).


Plus généralement, je n'aime pas du tout le principe de supprimer une technologie qui fonctionne pour en imposer une nouvelle : si la nouvelle est vraiment meilleure, elle devrait s'imposer d'elle-même
