tag.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:wdom 作者: miyakogi 项目源码 文件源码
def NewTagClass(class_name: str, tag: str = None,
                bases: Union[type, Iterable] = (Tag, ),
                **kwargs: Any) -> type:
    """Generate and return new ``Tag`` class.

    If ``tag`` is empty, lower case of ``class_name`` is used for a tag name of
    the new class. ``bases`` should be a tuple of base classes. If it is empty,
    use ``Tag`` class for a base class. Other keyword arguments are used for
    class variables of the new class.

    Example::

        MyButton = NewTagClass('MyButton', 'button', (Button,),
                               class_='btn', is_='my-button')
        my_button = MyButton('Click!')
        print(my_button.html)

        >>> <button class="btn" id="111111111" is="my-button">Click!</button>
    """
    if tag is None:
        tag = class_name.lower()
    if not isinstance(type, tuple):
        if isinstance(bases, Iterable):
            bases = tuple(bases)
        elif isinstance(bases, type):
            bases = (bases, )
        else:
            TypeError('Invalid base class: {}'.format(str(bases)))
    kwargs['tag'] = tag
    # Here not use type() function, since it does not support
    # metaclasss (__prepare__) properly.
    cls = new_class(  # type: ignore
        class_name, bases, {}, lambda ns: ns.update(kwargs))
    return cls
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号