2

我有一个 python 文件,其中填充了h1img和之类的函数,strong用于样式文本。这些函数中的每一个定义如下:

def _wrapTag(tag, text, **attributes):
    out = _createTag(tag, **attributes)
    out += text
    out += "</" + tag + ">"
    return out

def _createTag(tag, **attributes):
    out = "<" + tag
    if attributes:
        for attr, value in attributes:
            out += " " + attr + "=\"" + value + "\""
    out += ">"
    return out

def h2(text, **attributes):
    return _wrapTag("h2", text, **attributes)

在理想的世界中,要div使用 class创建一个,但modal我会调用它是一个受限制的关键字。有没有办法绕过这个而不添加特殊情况?div(content, class="modal")class_createTag

4

3 回答 3

4

PEP 8标准处理方法是添加尾随下划线:

  • single_trailing_underscore_:按惯例使用,以避免与 Python 关键字冲突,例如

Tkinter.Toplevel(master, class_='ClassName')

这是一种常见的解决方法,不会让任何人感到惊讶。您可以在您的代码中实现它,例如:

def _createTag(tag, **attributes):
    out = "<" + tag
    if attributes:
        for attr, value in attributes.items():
            out += " " + attr.rstrip('_') + "=\"" + value + "\""
    out += ">"
    return out

以便它自动从任何和所有属性中删除额外的下划线。然后你可以打电话:

>>> h2('contents', class_='myh2tag', id_='contenttag')
'<h2 class="myh2tag" id="contenttag">contents</h2>'

并解决两个单独的 Python 命名空间冲突,而不将其中任何一个作为特殊情况处理。

于 2012-11-15T21:06:56.380 回答
1

不,Python 关键字不能用作标识符,仅此而已。在这类事情中,通常的解决方案是class_用作名称。它需要特殊的外壳,但没有办法绕过它。

于 2012-11-15T21:01:12.887 回答
0
_createTag(tag, **{"class": 1})

使用此语法,您可以将任何内容传递给 **attributes。无需更改功能中的代码。

于 2012-11-15T21:35:40.927 回答