如何传递要在 python 中使用的函数名称
how to pass the function name to be used in python
我有以下 json 模板
template.py
from string import Template
test1 = Template(u'''\
{
"data": {
"name": "$name"
}
}
''')
并生成我使用的 JSONs
JSONGen.py
import template
class JSONGen:
result1 = template.test1.safe_substitute(
name = 'SomeName'
)
print(result1)
现在可以工作了,它会生成 JSON 但我正在尝试创建一个接受模板名称的函数并将其命名为
JSONGenV2.py
import template
class JSONGenV2:
def template_func(self, templateName):
generatedTemplate = template.templateName.safe_substitute(
name = 'SomeName'
)
print (generatedTemplate)
template_func(test1)
现在我想要实现的是使用 'templateName' 内容作为调用的模板,就像现在一样
template.templateName.safe_substitute
给我一个错误,说 'templateName' 不存在,'templateName' 如何更改为在 tihs 情况下传递的值 'test1' 所以它会调用
template.test1.safe_substitute
谢谢
您需要一种方法将模板名称转换为实际模板的实例。
我会定义一个字典,键是模板名称,值是模板实例。
test1 = Template(...)
test2 = Template(...)
templates = {
'test1': test1
'test2': test2
}
现在在您的方法中,您可以使用模板字典来获取您请求的模板的实例:
def template_func(self, templateName):
generatedTemplate = templates[templateName].safe_substitute(
name = 'SomeName'
)
print (generatedTemplate)
你会像这样调用方法:template_func('test1')
使用getattr()
,用法如下:
getattr
(object, name[, default])
Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, 'foobar')
is equivalent to x.foobar
. If the named attribute does not exist, default is returned if provided, otherwise AttributeError
is raised.
应用于您的代码:
class JSONGenV2:
def template_func(self, templateName):
generatedTemplate = getattr(template, templateName).safe_substitute(
name = 'SomeName'
)
print (generatedTemplate)
template_func(test1)
我有以下 json 模板
template.py
from string import Template
test1 = Template(u'''\
{
"data": {
"name": "$name"
}
}
''')
并生成我使用的 JSONs JSONGen.py
import template
class JSONGen:
result1 = template.test1.safe_substitute(
name = 'SomeName'
)
print(result1)
现在可以工作了,它会生成 JSON 但我正在尝试创建一个接受模板名称的函数并将其命名为
JSONGenV2.py
import template
class JSONGenV2:
def template_func(self, templateName):
generatedTemplate = template.templateName.safe_substitute(
name = 'SomeName'
)
print (generatedTemplate)
template_func(test1)
现在我想要实现的是使用 'templateName' 内容作为调用的模板,就像现在一样
template.templateName.safe_substitute
给我一个错误,说 'templateName' 不存在,'templateName' 如何更改为在 tihs 情况下传递的值 'test1' 所以它会调用
template.test1.safe_substitute
谢谢
您需要一种方法将模板名称转换为实际模板的实例。
我会定义一个字典,键是模板名称,值是模板实例。
test1 = Template(...)
test2 = Template(...)
templates = {
'test1': test1
'test2': test2
}
现在在您的方法中,您可以使用模板字典来获取您请求的模板的实例:
def template_func(self, templateName):
generatedTemplate = templates[templateName].safe_substitute(
name = 'SomeName'
)
print (generatedTemplate)
你会像这样调用方法:template_func('test1')
使用getattr()
,用法如下:
getattr
(object, name[, default])Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example,
getattr(x, 'foobar')
is equivalent tox.foobar
. If the named attribute does not exist, default is returned if provided, otherwiseAttributeError
is raised.
应用于您的代码:
class JSONGenV2:
def template_func(self, templateName):
generatedTemplate = getattr(template, templateName).safe_substitute(
name = 'SomeName'
)
print (generatedTemplate)
template_func(test1)