python中的拆分类方法
我经常使用classmethods而不是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)
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)