0

使用 Python 和 YAML,我遇到了一个误解问题。我有一个使用 YAML 标签GenReport.py定义对象的文件。Report当我只是修补GenReport我的 YAML 文件时,一切都运行良好。

但是当我创建一个名为GenReportDriver.py(say) 的新文件并导入GenReport时,现在事情并没有像我预期的那样工作。

GenReport.py我定义了一个函数:

# To expose object creation to importing modules.        
def create(yaml_file_name):
    report_gen = yaml.load_all(file(yaml_file_name))
    return report_gen

然后在GenReportDriver.py我使用以下内容:

import GenReport
class GenReportDriver(object):

    def __init__(self, yamlFile):

        # Construct the GenReport objects from the YAML specification.
        # pdb.set_trace()
        self.reports = GenReport.create(yamlFile)

这样做的目的是GenReportDriver提供我的程序的消费者想要的有用的东西,他们所要做的就是改变他们报告的 YAML 文件。(与将此类控制器功能GenReport直接存在于报表对象中相反)。

但是,__init__上面的函数(当我使用调试器时)导致我的变量self.reports简单地等于我传入的文件名,yamlFile. 也就是说,它似乎根本无法让 YAML 标记定义存在于GenReport.py

所以我的问题是如何在文件 A 中加载带有 YAML 文件的内容,其中文件 A 已导入文件 B,而文件 B 拥有 YAML 标签/定义?

为了澄清评论:

GenReport我已经定义了具有 YAML 标记标识符的对象,例如

class ManagedInventoryReport(yaml.YAMLObject): 
    yaml_tag = u'!InventoryReport' 
    # rest of class details...

等等,...这样用户就可以在他们的 YAML 文件中定义 !InventoryReport 对象,并将它们作为该类的实例加载。

4

0 回答 0