如何在Python中自动解析格式说明符? 例如,而不是:
MagicPrint(str.format('This is {}', my.name))
我想按如下方式编写MagicPrint()函数:
MagicPrint('This is {my.name}')
连连呢?也许我可以为MagicPrint()
函数使用装饰器?
请注意my.name
中不存在**locals()
,因为MagicPrint()
可以从其他模块调用。
答案 0 :(得分:0)
class my: name = "Jerry"
"This is {my.name}".format(**locals())
答案 1 :(得分:0)
仅适用于**locals()
。我正在寻找一种从另一个模块接收a.class_name
的方法。
class a: class_name = "name_class"
"This is {a.class_name}".format(**locals())
答案 2 :(得分:0)
使用this解决方案来访问调用者的变量。 然后我有自动访问来打印字符串。
def MagicPrint(s, *args, **kwargs):
''' In order for this to work we need the caller's module variables '''
f = sys._getframe(1)
try:
print (s.format(*args, **f.f_globals))
except:
print (s.format(*args, **f.f_locals))
else:
pass