On Mon, Jan 26 2015, enrico franchi wrote: > 2015-01-26 8:48 GMT+00:00 Marco Giusti <marco.giu...@posteo.de>: > > > > > La funzione è richiamata dal parser stesso e quindi non puoi utilizzare > > il valore returnato. Usare delle variabili globali non è vietato ma puoi > > utilizzare altre soluzioni, per esempio i metodi di una funzione. > > Infatti questi sono già legati all'oggetto stesso e quindi hanno già uno > > stato comune. Ti allego un esempio, abbastanza ridicolo a dire il vero. > > > > > Dico ma.... nell'essempio passano un *oggetto* cui hanno appiccicato delle > funzioni. > Ora perche' farsi male ad aggiungere stato alle funzioni appiccicate > all'oggetto quando si potrebbe semplicemente > passare un oggetto vero e proprio con il suo stato e nessun obrobrio?
Non colgo il significato. Comunque l'esempio voleva solo imitare le api di expat e fornirgli un'idea generale della soluzione, non mi sembra che expat fornisca un modo alternativo per gestire gli eventi. Certo si può rendere l'api di expat molto più elegante di quanto non lo è ora, ma non conosco le esigenze di Gollum. Per esempio a me piace molto la programmazione per interfacce ma mi sembra un po' esagerato tutto questo per uno scriptino. m.
from __future__ import print_function import zope.interface import xml.parsers.expat class IHandler(zope.interface.Interface): def XmlDeclHandler(version, encoding, standalone): pass def StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset): pass # ... def StartElementHandler(name, attributes): pass def EndElementHandler(name): pass def CharacterDataHandler(data): pass def parse(data, ihandler, isfinal=False): parser = xml.parsers.expat.ParserCreate() default = lambda *arguments: None for name in IHandler: setattr(parser, name, getattr(ihandler, name, default)) parser.Parse(data, isfinal) class MyHandler: def StartElementHandler(self, name, attrs): print("Start element:", name, attrs) def EndElementHandler(self, name): print("End element:", name) def CharacterDataHandler(self, data): print("Character data:", repr(data)) data = """<?xml version="1.0"?> <parent id="top"><child1 name="paul">Text goes here</child1> <child2 name="fred">More text</child2> </parent>""" parse(data, MyHandler())
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python