|
|
Subject: Re: Identifier une classe - msg#00010
List: python.french
On Fri, Feb 02, 2007 at 09:17:02AM +0100, Frédéric Mantegazza wrote:
> Bonjour,
Bonjour,
>
> Existe-t-il un moyen simple de différencier 2 classes ayant le même nom,
> mais pas la même implémentation (je cherche à générer un Id) ?
je te propose :
id(self.__class__)
par exemple.
Bon, il peut toujours y avoir des cas pathologiques où c'est pas tout à
fait sûr (avec des reload par ex.).
David
>
> Merci d'avance.
>
> --
> Frédéric
>
> --
> Gérez vos abonnements aux listes de diffusion : https://www.aful.org/wws
>
--
David Douard LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian : http://www.logilab.fr/formations
Développement logiciel sur mesure : http://www.logilab.fr/services
Informatique scientifique : http://www.logilab.fr/science
signature.asc
Description: Digital signature
Was this page helpful?
Thread at a glance:
Previous Message by Date:
click to view message preview
Re: Identifier une classe
Bonjour,
Le vendredi 02 fÃvrier 2007, FrÃdÃric Mantegazza a Ãcrit...
> Existe-t-il un moyen simple de diffÃrencier 2 classes ayant le mÃme nom,
> mais pas la mÃme implÃmentation (je cherche à gÃnÃrer un Id) ?
ma_classe.__module__ ??
--
jm
A.E.L. Sarl (R.C.S CASTRES 490843240)
http://www.affaires-en-ligne.com
--
Gïrez vos abonnements aux listes de diffusion : https://www.aful.org/wws
Next Message by Date:
click to view message preview
Re: yaml
On Fri, Feb 02, 2007 at 08:40:02AM +0100, Stephane Bortzmeyer wrote:
>
> Là, oui, on est dans les questions de goûts et de couleurs...
Oui. En même temps, note bien que personne ne te tiens un flingue à la
tempe pour t'obliger à utiliser YAML plutôt que les trucs dont tu as
l'habitude. (Ou alors si c'est le cas, envoie un message codé à la
liste et on t'enverra du secours. En attendant, gagne du temps en
oubliant de fermer un tag XML ou une accolade JSON pour faire planter
leurs parseurs respectifs.) :)
sys.stdout.write( "Bien à toi,\n" )
-- S.
--
Gérez vos abonnements aux listes de diffusion : https://www.aful.org/wws
Previous Message by Thread:
click to view message preview
Re: Identifier une classe
Le vendredi 2 février 2007 09:21, Jean-Michel OLTRA a écrit :
> > Existe-t-il un moyen simple de différencier 2 classes ayant le même
> > nom, mais pas la même implémentation (je cherche à générer un Id) ?
>
> ma_classe.__module__ ??
Oui, effectivement, ça doit marcher. Et c'est si simple...
Merci :o)
--
Frédéric
--
Gérez vos abonnements aux listes de diffusion : https://www.aful.org/wws
Next Message by Thread:
click to view message preview
pyqonsole et Popen
Bonjour,
[Je pose la question ici, même si ce sont les gens de Logilab qui seront les
plus à même de répondre ; la réponse peut intéresser d'autres personnes].
J'utilise depuis un moment le module pyqonsole, développé par Logilab à
notre demande (CEA-Grenoble). Ce module est en fait un portage (incomplet)
de konsole (émulateur de terminal graphique de la suite KDE) en python, et
ne dépendant que de pyQt (l'auteur de konsole avait en fait fourni une
version de konsole ne dépendant pas de KDE, mais uniquement de Qt).
Aujourd'hui j'essaye de faire un client graphique utilisant pyqonsole, et
devant ouvrir des processus fils via le module subprocess. Et ça ne marche
pas. Voici un exemple :
--------------------------------------------------------------------------
# -*- coding: iso-8859-1 -*-
import sys
import subprocess
import qt
import pyqonsole.widget
import pyqonsole.session
import pyqonsole.history
class View(qt.QMainWindow):
def __init__(self, parent=None, name=None, fl=0):
qt.QMainWindow.__init__(self, parent, name, fl)
self.statusBar()
if not name:
self.setName("Test")
self.resize(qt.QSize(600, 480).expandedTo(self.minimumSizeHint()))
class Controler(qt.QObject):
def __init__(self, f, view):
super(Controler, self).__init__()
def do(self):
cmdLine = ("cat", "/etc/profile")
pipe = subprocess.Popen(cmdLine, stdout=subprocess.PIPE)
pipe.wait()
for line in pipe.stdout.readlines():
print line,
f.write(line)
f.flush()
f = file("/tmp/pipo", 'w')
f.write("File /tmp/pipo\n\n")
f.flush()
app = qt.QApplication(sys.argv)
view = View()
# Console emulation
te = pyqonsole.widget.Widget(app, view)
te.setScrollbarLocation(2)
te.resize(te.calcSize(80, 30))
te.show()
session = pyqonsole.session.Session(te, "tail", ["-f", "/tmp/pipo"],
"xterm")
session.setConnect(True)
session.setHistory(pyqonsole.history.HistoryTypeBuffer(50))
session.run()
ctrl = Controler(f, view)
app.setMainWidget(view)
view.show()
timer = qt.QTimer()
app.connect(timer, qt.SIGNAL("timeout()"), ctrl.do)
timer.start(3000, True)
app.exec_loop()
--------------------------------------------------------------------------
Cette petite appli ne possède qu'un widget pyqonsole, dans lequel je lance
un tail -f sur un fichier. Ce fichier sera rempli par la méthode do() du
contrôleur en utilisant la sortie d'un processus fils lancé via
subprocess.Popen() ; la méthode do() est appelée après un délai de 3s (via
le QTimer() ).
Or, à ce moment là, l'appli se fige et consomme 100% du CPU. On sort bien de
la méthode do(), mais ensuite le gestionnaire d'évènements de Qt est dans
les choux.
Si on vire la partie qui instancie l'émulateur de terminal, ça fonctionne
(pas de bloquage) ; si on vire le Popen(), ça ne bloque pas non plus.
Est-ce que quelqu'un voit pourquoi ? Quelle peut-être l'influence du couple
pyqonsole/Popen sur le gestionnaire d'évènements de pyQt ?
Merci de vos lumières.
--
Frédéric
--
Gérez vos abonnements aux listes de diffusion : https://www.aful.org/wws
|
|