不同的行爲寫Python類我希望能夠實例化一個對象,它的方法將不同的表現取決於平臺。有適用於Mac和Windows
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()
你有什麼理由不對於不同的平臺有不同的類別? – delnan
你知道'os.path.expanduser'? http://docs.python.org/2/library/os.path.html?highlight=os.path#os.path.expanduser –
@NiclasNilsson的get_home_directory方法僅僅是一個例子。我將根據平臺添加更多需要不同功能的方法。 – travis1097