我试图使用^{.tex
文件创建一个新类。例如,如果我有一个a4-page-template.tex
文件,我需要创建一个名为A4PageTemplate
的类。在
我可以使用type语句很容易地创建类型;到目前为止,我得到的是这样的
#
# dynamictypes.py
#
import os, re
_requiredEnd = "-template.tex"
_packageDir = "C:\\Users\\...";
def _getClassName(name):
return re.sub("-(.)", lambda m: m.group(1).upper() , name) + "Template"
for file in os.listdir(_packageDir):
if file.lower().endswith(_requiredEnd):
_fileWithoutExt = file[:-len(_requiredEnd)]
_className = _getClassName(_fileWithoutExt)
_newClass = type(_className, (object,), dict(template=file))
print _newClass
注意倒数第二行创建了类型,它后面的print语句表明已经为每个模板创建了一个类型
^{pr2}$但是,当我使用模块时,我不能使用类型;如果我编写这个消费者脚本
import dynamictypes
myTemplate = dynamictypes.PandocA4BookTemplate()
我得到这个错误
Traceback (most recent call last):
File "C:\Users\steve.cooper\Desktop\driver.py", line 3, in <module>
myTemplate = dynamictypes.PandocA4BookTemplate()
AttributeError: 'module' object has no attribute 'PandocA4BookTemplate'
您能想出一种方法来将我创建的类型添加到模块中,使其成为模块的一级部分吗?在
您已经创建了新类并将其分配给全局变量
_newClass
,但是您没有存储这个变量!请注意,如果您这样做dynamictypes._newClass
,您将得到最终类型的创建。在创建新类时,需要创建一个变量来保存每个新类:
这会在模块中将_className注册为全局变量,以便您可以从外部访问它。在
顺便说一下,您的regex在}。在
a4-page-template.tex
上失败,您得到的是a4PageTemplate
,而不是{相关问题 更多 >
编程相关推荐