我正在编写一个生成 C++ 程序的 Python 程序。有一大堆这样的代码实例:
class TestBlock(object):
def __init__(self, mod, name, casetype, generator):
self.mod = mod
self.name = name
self.casetype = casetype
self.generator = generator
def fullname(self):
return "{mod}.{name}".format(**self.__dict__)
def write_cases(self, outf):
outf.write("const {casetype} {mod}_{name}[] = {{\n"
.format(**self.__dict__))
for case in self.generator():
outf.write(" { " + case + " },\n")
outf.write("};\n\n")
"text {subst}".format(**self.__dict__)
构造是我发现使实例变量可用作命名替换的唯一方法,self
它很丑陋,我不喜欢它。我希望能够写作"text {subst}".format(self)
;这可能吗?如果可以,怎么做?我知道这"text {0.subst}".format(self)
将是开箱即用的,并且"text {subst}".format(**self)
可以使用一些特殊的方法,但是这两种方法仍然有额外的粘性。