XHPy rozciąga składni Pythona, tak że stają się ważne fragmenty XML wyrażenia Pythona.
Korzyści
& Nbsp; * Prostota: Napisać logikę interfejsu użytkownika w prosty, wyrazisty składni bez potrzeby szablonów zewnętrznych lub językach szablonowych.
& Nbsp; * Elastyczność: wyrażenia wykorzystanie Python swobodnie w etykietach XHPy i odwrotnie.
& Nbsp; * Bezpieczeństwo: korzyści z automatycznego cytowanie tekstu w znacznikach XHPy.
& Nbsp; * Ponowne: budowania komponentów wielokrotnego użytku przez podklasy: x: element.
przykład
W bar.py:
z xhpy.init importu register_xhpy_module
register_xhpy_module ('foo')
import foo
W foo.py:
z xhpy.pylib import *
Klasa: ui: foo (x: Element):
& Nbsp; atrybut Lista bar
& Nbsp; kategoria% przepływu
& Nbsp; def render (self):
& Nbsp; =
& Nbsp; b na self.getAttribute ("bar"):
& Nbsp; a.appendChild (
& Nbsp; powrót
Możemy teraz uruchomić bar.py jako zwykły skrypt Pythona:
$ Python bar.py
- 0
- 1
- 2
Gratulujemy! Po prostu napisałem swój pierwszy fragment XHPy.
Składnia
XHPy dodaje jakąś nową składnię do Pythona. Linia po linii czasu replay!
z xhpy.init importu register_xhpy_module
To inicjuje XHPy i pozwala zarejestrować moduły należy interpretować w XHPy.
register_xhpy_module ('foo')
Teraz moduł foo w foo.py będą interpretowane jako XHPy gdy importowane. Jeśli pakiet bla były, wszystkie jej submodules będą również zarejestrowane; jest to przydatne do rejestracji bibliotek UI.
import foo
Aby właściwie wykorzystać XHPy jednak prawdopodobnie zechcesz biblioteki rdzenia:
z xhpy.pylib import *
Teraz masz dostęp do wszystkich standardowych elementów HTML 4.0, x: klasa bazowa element (to jest to, co można zbudować niestandardowych komponentów na szczycie!), A niektóre narzędzia.
Klasa: ui: foo (x: Element):
Nawiązywanie nowych komponentów jest proste: po prostu podklasy: x: Element. Dla klasa składnikiem być zarejestrowany, musi zacząć się: - co wyraźnie odróżnia składniki ze zwykłych klas Pythona.
bar listy atrybutów
Jest to deklaracja atrybutu, co oznacza, że: ui: foo bar pozwala atrybuty
później - jak XHP, XHPy używa składni atrybutu XML.
Kategoria% przepływu
Jest to deklaracja kategoria -: ui: foo jest częścią kategorii% przepływu. Produkty są przede wszystkim przydatne jako sposób identyfikacji elementy podobne bez spadku; na przykład <> w pylib.html ma
dzieci (PCDATA |% przepływu) *
wskazując, że jej dzieci muszą albo zawierać tekst lub być z kategorii% przepływu. (Tak więc możemy umieścić
def render (self):
Podczas drukowania: X: elementu (lub zadzwonić str na nim), render () Metoda jest wywoływana; to gdzie można umieścić swoją logikę interfejsu użytkownika.
=
dla b w self.getAttribute ("bar"):
& Nbsp; a.appendChild (
powrót
Tutaj
- , który pozwala na budowę listę nieuporządkowaną z listy Pythona. Standardowe elementy HTML, takich jak
- są automatycznie wygenerowana - chyba, że w XHPy można używać wyrażeń Pythona w ramach znaczników, tak by
{B}
otrzymuje wartość b. Zauważ zastosowanie getAttribute () i appendChild ():
self.getAttribute ("bar")
pobiera wartość atrybutu bar (w tym przypadku, zakres (3)), natomiast
a.appendChild ( - {b} )
- {b} jako dziecko =
- Python
- i
Dodaje
XHPy jest w dużej mierze oparte off XHP; Więcej szczegółów na ten ostatni, zobacz `XHP wiki
& Nbsp; * nazwy klas XHPy może być stosowany wszędzie zwykłe klasy Pythona może;
& Nbsp; * tagi XHPy ignorować wewnętrzne białe znaki, ale musi przestrzegać zasad wcięć zewnętrznie i kontynuacji linii.
Więcej na temat ostatniego punktu:
bla def (href):
& Nbsp; return >
Pasek def (href):
& Nbsp; powrót
& Nbsp; >
są ważne, natomiast
bla def (href):
& Nbsp; powrót
& Nbsp;
& Nbsp; >
Nie jest, ponieważ wprowadza dodatkową dedent po >.
Jak to działa?
Kiedy ty
Import xhpy.init
XHPy instaluje hak importu. Ten hak pułapki kolejne instrukcje importu, prowadzenie ich przez preprocesor, który analizuje nadzbiór Pythonie. Ten preprocesor tagów XHPy i przekłada nazwy klas do ważnego Python, następnie wykonuje przetłumaczony kod w zakresie modułu.
Jest to podobne do tego, jak XHP działa, z wyjątkiem:
& Nbsp; * z, na przykład, pythonenv, zawsze możesz skorzystać XHPy nawet bez dostępu do całego systemu katalogów instalacyjnych pakietu Python;
. & Nbsp; * domyślnie Python kompiluje kod bajtowy .pyc plików z modułów, więc przerób musi tylko zrobić raz, gdy moduł jest importowany po raz pierwszy
Wymagania :
Komentarze nie znaleziono