gpt4 book ai didi

python - 允许使用 token `class` 作为方法签名中的命名参数

转载 作者:行者123 更新时间:2023-11-28 22:01:13 25 4
gpt4 key购买 nike

我有一个 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 添加特殊情况吗?

最佳答案

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 命名空间冲突,而不将它们作为特殊情况处理。

关于python - 允许使用 token `class` 作为方法签名中的命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com