다음 코드에서는 기본 추상 클래스를 만듭니다 Base
. 상속하는 모든 클래스가 속성 Base
을 제공하기 를 원하므로이 name
속성을 @abstractmethod
.
그런 다음 일부 기능을 제공하지만 여전히 추상적 Base
인이라는 하위 클래스를 만들었습니다 Base_1
. 에는 name
속성이 Base_1
없지만 그럼에도 불구하고 파이썬은 오류없이 해당 클래스의 객체를 instatinates. 추상 속성을 어떻게 생성합니까?
from abc import ABCMeta, abstractmethod
class Base(object):
__metaclass__ = ABCMeta
def __init__(self, strDirConfig):
self.strDirConfig = strDirConfig
@abstractmethod
def _doStuff(self, signals):
pass
@property
@abstractmethod
def name(self):
#this property will be supplied by the inheriting classes
#individually
pass
class Base_1(Base):
__metaclass__ = ABCMeta
# this class does not provide the name property, should raise an error
def __init__(self, strDirConfig):
super(Base_1, self).__init__(strDirConfig)
def _doStuff(self, signals):
print 'Base_1 does stuff'
class C(Base_1):
@property
def name(self):
return 'class C'
if __name__ == '__main__':
b1 = Base_1('abc')
@property
에class C
,name
방법으로 되돌아갑니다.