我有一个python文件,其中包含h1
和img
以及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
类modal
,我会调用div(content, class="modal")
但class
是受限制的关键字。有没有办法绕过这个而不向_createTag
添加特殊情况?
答案 0 :(得分:4)
PEP 8标准处理方式是添加尾随下划线:
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名称空间冲突,而不将它们作为一种特殊情况处理。
答案 1 :(得分:1)
没有。 Python关键字不能用作标识符。这类事情的通常解决方案是使用class_
作为名称。它需要特殊的外壳,但是没有办法解决它。
答案 2 :(得分:0)
_createTag(tag, **{"class": 1})
使用此语法,您可以将任何内容传递给**属性。不需要对函数进行代码更改。