データを取得し、データを解析するためのさまざまな関数を持つPythonクラスを作成する場合。最も正しい方法は何ですか?self.data ...を1つずつ入力し、解析関数を実行してself.parsed_data ...を入力するように記述できます。または、self.dataを受け入れてself.parsed_dataを返す関数を記述するのが正しいですか。 。?
以下の例。MyClass1はself.variablesにデータを入力し、MyClass2はそれらをパラメーターとして受け取ります。MyClass2は「最も」正しいと思います。
それで、何が正しいのですか?なぜ?私はしばらくの間、これら2つのコーディングスタイルのどちらかを決定しようとしてきました。しかし、これらのうちどれがベストプラクティスと見なされているかを知りたいです。
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()