當編寫一個具有不同函數的python類來獲取數據和解析數據時,什麼是最正確的方法? 您可以編寫它,以便逐個填充self.data ...,然後運行解析函數來填充self.parsed_data ....或者編寫接受self.data的函數並返回self.parsed_data ..?用正確的方式編寫大型python類
下面的例子。 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()
+1的鏈接:P – root 2013-03-09 14:08:05
這個例子不應該是一個類。但它是另一個類的簡單版本,應該是一個類:)但是,感謝鏈接,不應該僅僅因爲我們可以使用類。 – xeor 2013-03-09 14:39:30