Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的拆分类方法_Python_Python 2.7 - Fatal编程技术网

python中的拆分类方法

python中的拆分类方法,python,python-2.7,Python,Python 2.7,我经常使用classmethods而不是python中的默认构造函数,例如: class Data(object): def __init__(self, x, y, z): self.x = x etc.. @classmethod def from_xml(cls, xml_file): x, y, z = import_something_from_xml(xml_file) return cls(x,y,z)

我经常使用classmethods而不是python中的默认构造函数,例如:

class Data(object):
    def __init__(self, x, y, z):
        self.x = x etc..

    @classmethod
    def from_xml(cls, xml_file):
        x, y, z  = import_something_from_xml(xml_file)
        return cls(x,y,z)
这种方法效果很好,
但是,由于我经常使用大型类方法构造函数,所以我希望将它们拆分为较小的函数。我的问题是,这些较小的函数可以在类名称空间中看到,有没有办法避免这种情况?

您可以将较小的助手函数标记为private:

@classmethod
def __import_something_from_xml(cls, data):
    #logic
    return a, b, c
你会跑:

@classmethod
def from_xml(cls, xml_file):
    x, y, z  = cls.__import_something_from_xml(xml_file)
    return cls(x,y,z)
请记住,这只是命名约定,可以从数据命名空间访问此方法

或者,您可以指定一个助手类:

class XMLDataHelper:
    @staticmethod
    def import_something_from_xml(data):
        #logic
        return a, b, c
代码应该是这样的

@classmethod
def from_xml(cls, xml_file):
    x, y, z  = XMLDataHelper.import_something_from_xml(xml_file)
    return cls(x,y,z)