XHPy扩展Python语法使XML片段成为有效的Python表达式。
优点
  *简单:在无需外部模板或模板语言简单,表达的语法编写UI逻辑。
  *灵活:使用Python的内自由XHPy标签的表达式,反之亦然。
  *安全性:受益于文字XHPy标签内的自动转义。
  *可重用性:通过子类化构建可重用的组件:X:元素。
例如
在bar.py:
从xhpy.init进口register_xhpy_module
register_xhpy_module('富')
进口FOO
在foo.py:
从xhpy.pylib进口*
等级:UI:FOO(X:元):
 属性列表栏
 类别%流量
 高清渲染(个体经营):
  A =
 对于B在self.getAttribute(“巴”):
  a.appendChild(
 返回
打印
现在,我们可以运行bar.py作为一个正常的Python脚本:
$蟒蛇bar.py
- 0
- 1
- 2
恭喜!你只写了XHPy你的第一个片段。
语法
XHPy增加了一些新的语法到Python。一行行重播时间!
从xhpy.init进口register_xhpy_module
这初始化XHPy,并允许您注册模块被解释为XHPy。
register_xhpy_module('富')
现在,在foo.py foo的模块导入时将被解释为XHPy。如果FOO是一个包,所有的子模块也将被登记;这是用于登记UI库是有用的。
进口FOO
实际使用XHPy,但是,你可能会想在核心库:
从xhpy.pylib进口*
现在,您可以访问所有标准的HTML 4.0的元素,在X:元素的基类(这是你在上面构建自定义组件!),以及一些实用程序。
等级:UI:FOO(X:元):
使新组件很容易:只要子类:X:元素。对于要注册的组件类,它必须首先: - 这显然不同于普通的Python类区分你的组件。
属性列表栏
这是一个属性声明,这意味着:用户界面:FOO允许在
后来 - 像XHP,XHPy使用XML属性语法。
类别%流量
这是一类的声明 - :UI:foo是在%流量类别的一部分。类别是主要作为识别是不使用继承相似的元件的一种方法有用的;例如,在pylib.html的<一>标签
儿童(PCDATA |%流量)*
表明其子女必须包含文本或成为%的流量类别。 (因此,我们可以把
高清渲染(个体经营):
当你打印:X:元素(或称STR就可以了),渲染()方法被调用;这就是你把你的UI逻辑。
A =
对于B在self.getAttribute(“巴”):
&NBSP; a.appendChild(
返回
在这里,
- ,允许您构建一个无序列表出来一个Python列表。像
- 标准HTML元素会自动渲染 - 除了在XHPy,你可以使用Python表达式中的标记,使
{B}
被替换为b的值。注意,这里使用的getAttribute()和使用appendChild()的:
self.getAttribute(“巴”)
取的属性栏的值(在这种情况下,范围(3)),而
a.appendChild( - {B} )
- {B} 作为一个=
- 在Python中
- 和
加上
XHPy在很大程度上是基于关闭XHP;关于后者的更多详细信息,请参阅'XHP维基
&NBSP; * XHPy类名称,可以在任何地方使用普通的Python类即可;
&NBSP; * XHPy标签忽略内部的空白,但必须服从外部缩进和续行规则。
更多关于最后一点:
高清FOO(HREF):
&NBSP;返回的
高清杆(HREF):
&NBSP;返回
&NBSP;的
是有效的,而
高清FOO(HREF):
&NBSP;返回
&NBSP;的
&NBSP;
不是,因为它引入了后额外取消缩进。
工作原理
当你
进口xhpy.init
XHPy安装一个进口钩。这个钩子陷阱随后import语句,通过预处理解析的Python的一个超集运行它们。此预处理器XHPy标签和类名来有效的Python,然后执行模块范围内的翻译代码。
这类似于除了XHP是如何工作的,:
&NBSP; *用,例如,pythonenv,你可以随时使用XHPy即使没有接入到系统级的Python包的安装目录;
&NBSP; *默认情况下,Python的字节码编译的.pyc文件从你的模块,所以预处理只需要进行一次,当一个模块被首次导入
要求:
评论没有发现