允许在signatu方法中将标记“class”用作命名参数

2024-09-30 20:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)

在理想情况下,要用类modal创建div,我会调用div(content, class="modal"),但是class是一个受限关键字。有没有什么方法可以绕过这个问题而不在_createTag中添加特殊情况?你知道吗


Tags: textdivreturnvaluedeftag情况h2
3条回答
_createTag(tag, **{"class": 1})

使用此语法,您可以将任何内容传递给**属性。不需要在函数中更改代码。你知道吗

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

  • 单\尾随\下划线\按惯例使用,以避免与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名称空间冲突,而不将它们作为特例处理。你知道吗

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

相关问题 更多 >