在编写具有不同功能的python类来获取数据和解析数据时;什么是最正确的方法?您可以编写它以便一个接一个地填充 self.data...,然后运行解析函数来填充 self.parsed_data.... 或者编写接受 self.data 并返回 self.parsed_data 的函数是否正确。 .?
下面的例子。MyClass1 填充 self.variables,MyClass2 将它们作为参数。我认为 MyClass2 是“最”正确的。
那么,什么是正确的?为什么?一段时间以来,我一直试图决定这两种编码风格中的哪一种。但我想知道其中哪些被认为是最佳实践。
class MyClass1(object):
def __init__(self):
self.raw_data = None
def _parse_data(self):
# This is a fairly complex function xml/json parser
raw_data = self.raw_data
data = raw_data # Much for is done to do something with raw_data
cache.set('cache_key', data, 600) # Cache for 10 minutes
return data
def _populate_data(self):
# This function grabs data from an external source
self.raw_data = 'some raw data, xml, json or alike..'
def get_parsed_data(self):
cached_data = cache.get('cache_key')
if cached_data:
return cached_data
else:
self._populate_data()
return self._parse_data()
mc1 = MyClass1()
print mc1.get_parsed_data()
class MyClass2(object):
def _parse_data(self, raw_data):
# This is a fairly complex function xml/json parser
data = raw_data # After some complicated work of parsing raw_data
cache.set('cache_key', data, 600) # Cache for 10 minutes
return data
def _get_data(self):
# This function grabs data from an external source
return 'some raw data, xml, json or alike..'
def get_parsed_data(self):
cached_data = cache.get('cache_key')
if cached_data:
return cached_data
else:
return self._populate_data(self._get_data())
mc2 = MyClass2()
print mc1.get_parsed_data()