pythonのclass設計について質問します。
いま、例えばあるクラスFooを作ろうとしているときに、2パターンのコードを考えています。
①
Python
1class Foo(object): 2 def __init__(self, n): 3 self.x = n 4 self.z = 3 5 self.y = self.calc_y(x) 6 7 @staticmethod 8 def calc_y(x): 9 y = do_something(x) 10 return y 11
②
Python
1class Foo(object): 2 def __init__(self, n): 3 self.x = n 4 self.z = 3 5 self.set_y() 6 7 def set_y(self): 8 self.y = do_something(self.x)
①は、calc_yで使用する変数を明示しているので、クラス変数xの変更がこれに影響すること、変数zの変更はこれに全く影響しないことが明示されます。
しかし調べた限りでは@staticmethodは可能なら使わないほうが良いという記事が多く、その点では②にすべきであるように思えます。
実際のところ、どちらが良いのでしょうか?
また、それは何故でしょうか?

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/31 04:55
2016/05/31 06:41
2016/05/31 06:54
2016/06/04 05:23