Zanurkuj w Pythonie/Tworzenie oddzielnych funkcji obsługi względem typu węzła: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Beau (dyskusja | edycje)
sprzątanie kodu
Nie podano opisu zmian
Linia 24:
|10.18|<code>parse</code>, ogólna funkcja pośrednicząca dla węzła XML
|tekst=
<sourcesyntaxhighlight lang="python">
def parse(self, node):
parseMethod = getattr(self, "parse_%s" % node.__class__.__name__) #(1) (2)
parseMethod(node) #(3)
</syntaxhighlight>
</source>
 
# Od razu, zauważmy, że konstruujemy dłuższy napis oparty na nazwie klasy przekazanego węzła (jako argument <code>node</code>). Zatem, jeśli przekażemy węzeł <code>Document</code>-u, konstruujemy napis <code>'parse_Document'</code> itd.
Linia 38:
|10.19|Funkcje wywoływane przez funkcję pośredniczącą <code>parse</code>
|tekst=
<sourcesyntaxhighlight lang="python">
def parse_Document(self, node): #(1)
self.parse(node.documentElement)
Linia 57:
handlerMethod = getattr(self, "do_%s" % node.tagName)
handlerMethod(node)
</syntaxhighlight>
</source>
# <code>parse_Document</code> jest wywołany tylko raz, ponieważ jest tylko jeden węzeł klasy <code>Document</code> w dokumencie XML i tylko jeden obiekt klasy <code>Document</code> w przeparsowanej reprezentacji XML-a. Tu po prostu idziemy dalej i parsujemy część główną pliku gramatyki.
# <code>parse_Text</code> jest wywoływany tylko na węzłach reprezentujących fragmenty tekstu. Funkcja wykonuje kilka specjalnych operacji związanych z automatycznym wstawianiem dużej litery na początku słowa pierwszego zdania, ale w innym wypadku po prostu dodaje reprezentowany tekst do listy.