python代码导出_代码生成 – Python生成Python
我有一組對象,我正在創(chuàng)建一個類,我想要將每個對象存儲為自己的文本文件.我真的希望將其存儲為一個
Python類定義,它會分類我正在創(chuàng)建的主類.所以,我做了一些戳,并在effbot.org上找到了一個Python代碼生成器.我做了一些實驗,這里是我想出來的:
#
# a Python code generator backend
#
# fredrik lundh, march 1998
#
# fredrik@pythonware.com
# http://www.pythonware.com
#
# Code taken from http://effbot.org/zone/python-code-generator.htm
import sys, string
class CodeGeneratorBackend:
def begin(self, tab="\t"):
self.code = []
self.tab = tab
self.level = 0
def end(self):
return string.join(self.code, "")
def write(self, string):
self.code.append(self.tab * self.level + string)
def indent(self):
self.level = self.level + 1
def dedent(self):
if self.level == 0:
raise SyntaxError, "internal error in code generator"
self.level = self.level - 1
class Point():
"""Defines a Point. Has x and y."""
def __init__(self, x, y):
self.x = x
self.y = y
def dump_self(self, filename):
self.c = CodeGeneratorBackend()
self.c.begin(tab=" ")
self.c.write("class {0}{1}Point()\n".format(self.x,self.y))
self.c.indent()
self.c.write('"""Defines a Point. Has x and y"""\n')
self.c.write('def __init__(self, x={0}, y={1}):\n'.format(self.x, self.y))
self.c.indent()
self.c.write('self.x = {0}\n'.format(self.x))
self.c.write('self.y = {0}\n'.format(self.y))
self.c.dedent()
self.c.dedent()
f = open(filename,'w')
f.write(self.c.end())
f.close()
if __name__ == "__main__":
p = Point(3,4)
p.dump_self('demo.py')
感覺真的很丑,是否有更清潔/更好/更多/更多的pythonic方式來做到這一點?請注意,這不是我真的打算這樣做的課程,這是一個小班,我可以很容易地模擬不要太多的行.此外,子類不需要在其中具有生成函數(shù),如果我再次需要,我可以從超類調(diào)用代碼生成器.
總結
以上是生活随笔為你收集整理的python代码导出_代码生成 – Python生成Python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python读取word指定内容_pyt
- 下一篇: iqc工作职责和工作内容_监理工程师工作