プラットフォームによってメソッドの動作が異なるオブジェクトをインスタンス化できるようにしたいと考えています。
import sys
class MyClass(object):
@property
def os_is_darwin(self):
return sys.platform == 'darwin'
def get_home_directory(self):
if self.os_is_darwin:
return '/Users/travis/'
else:
return 'C:\\Users\\travis\\'
抽象基本クラスを使用し、Mac と Windows の実装をサブクラスに分割することで、これを行うよりクリーンな方法はありますか? 重要なことは、上記のクラスが行うように、呼び出し元のプラットフォームを抽象化することです。
my_object = MyClass()
print my_object.get_home_directory()