PyH源码解析(3)steemCreated with Sketch.

in #cn6 years ago

添加Tag对象内容

通过构造函数传递Tag内容

用户使用场景如下:

>>> a=div('test')
>>> print(a)
<div>
test
</div>

实现原理

Tag对象继承自list对象,list对象中存放的是Tag对象的内容或者子Tag对象,所以,新增这些内容或者子Tag对象,只是简单的调用addObj函数,而这个函数也只是简单的调用list的append函数,增加到列表中。如下:

def addObj(self, obj):#{{{
| 44 id = self.setID(obj)
| 45 setattr(self, id, obj)
| 46 self.append(obj)
| 47 #}}}

至于setID()和setattr()的作用,我们后续再讲。

打印Tag对象的子Tag和内容

知道了Tag对象和子Tag和内容存放在list中,就知道如何打印他们了,核心代码如下所示:

for c in self: 
88 if isinstance(c, Tag): 
89 result += c.render() 
90 else: 
91 result += c