编写从几个文件中提取子类(方法)的类的正确方法是什么?

时间:2019-06-03 12:45:37

标签: python python-3.x class pylint

我已经编写了一个类作为寄存器映射的中央数据管理引擎。我编写了子类(很像扩展),它提供了各种输入解析器和输出格式化程序。但是,它们依赖于能够访问主类的内部变量才能进行操作。我想使扩展与主类分离,但能够将所有方法通告给主类的实例化器。

实际上一切正常,除了我从Pylint收到以下形式的许多错误:     E:275,8:'RegMapXLS'的实例没有'log'成员(无成员) log是主类中的共享函数。

# typical "extension" class
class RegMapXLS():
    ''' The part of RegisterMap class which contains the xlsx source file
        parsing functions
    '''

    def parse_config(self, configsheet):

# main class including all "extension class inherritance"
class RegisterMap(RegMapXLS, RegMapPy, RegMapDocx, RegMapVhdl):
    '''Register map bundling settings as instances of the class Setting.
    '''

    # only this class has an __init__ call to instantiate it and its code
    def __init__(self, name, output_path, report=None):

我当然可以将整个事情写成一个大类,但是出于可维护性的考虑,我将它们分成了几个文件。另一种方法是编写一个所有“姐妹”类都继承的“基类”,并创建一个只继承所有部分的空类(尽管不清楚然后我如何称呼 init 方法2降低)。我的问题是什么是最好的/ Python方式以及维护和可读性。

最后我想要的是一个可以编写的简单UI:

with RegisterMap(udi, output_path=output_path) as regmap:
    regmap.parse_source(regmap_source)

    #these methods are pulled in from other source files/authors
    regmap.export_HDF5(output_path)
    regmap.to_vhdl(regmap_reg_pkg_template)
    regmap.to_pin()
    regmap.to_docx(doc_template=doc_template)

0 个答案:

没有答案