1
在Python中處理抽象屬性的最好的,最Pythonic的方法是什麼?如果我想實現一個混合了抽象屬性和具體方法的基類,我可以這樣做。在Python中實現抽象屬性
class BaseClass(object):
__metaclass__ = ABCMeta
@abstractmethod
def property1(self):
pass
@abstractmethod
def property2(self):
pass
@abstractmethod
def property3(self):
pass
@abstractmethod
def abstract_method(self):
pass
def concrete_method(self):
return self.property1 + self.property2
然而,當我然後去實現繼承類,我需要實現每個屬性的getter方法的私有財產。
class Klass(BaseClass):
def __init__(property1, property2, property3):
self.__property1 = property1
self.__property2 = property2
self.__property3 = property3
@property
def property1(self):
return self.__property1
@property
def property2(self):
return self.__property2
@property
def property3(self):
return self.__property3
這似乎既不必要冗長,也使代碼比它需要更晦澀。
如果繼承類沒有實現它自己的版本,我不喜歡具體實現東西並提高NotImplementedError
的想法。
有沒有更好的方法來做到這一點?
謝謝。我知道'abstractproperty'裝飾器已經存在,但是使用它卻沒有什麼意義。這是更可讀性。 –