나는 기본 클래스를 만들고 모든 하위 클래스의 인터페이스를 구현하도록하고있다. 이 목적으로 abc
모듈을 사용하고 있습니다. 여기 파이썬 ABC 불완전한 구현을 허용하는 것 같다
class PluginBase:
__metaclass = abc.ABCMeta
@abc.abstractmethod
def strrep(self):
return
@abc.abstractmethod
def idle(self):
print 'PluginBase: doing nothing here'
pass
@abc.abstractmethod
def say(self, word):
print 'PluginBase: saying a word ''', word, '\''
return
그리고 여기에 아이입니다 :
class ConcretePlugin(PluginBase):
def __init__(self, val):
print 'initialising ConcretePlugin with value of %d' % val
self.val = val
def strrep(self):
print 'ConcretePlugin = %d' % self.val
return
#'idle' method implementation is missing
def say(self): # missing argument here; saying our own word =)
print 'ConcretePlugin: this is my word'
return
이 테스트 :
,536,913 :child = ConcretePlugin(307)
child.strrep()
child.idle()
child.say()
는 다음과 같은 결과를 생성
불완전한 구현에 대해 아무렇지도 않게 표현하십시오!
제 질문은 추상 기본 클래스가 실제로 추상이 아닌지 여부입니다. 그리고 그들이 그렇지 않다면 강력한 타이핑을 만드는 어떤 방법이 있습니까?
참고 : 나는라는 이름의 한 예 클래스 PluginBase
및 CompletePlugin
내가 클라이언트 클래스가 적절한 인터페이스를 구현해야 할 필요가 있음을 표시합니다.
나는 object
에서 PluginBase
을 파생 시키려고 시도했으나 아무런 차이가 없습니다. 파이썬 2.7.1을 사용 중입니다.
도움이 되겠습니다.
감사합니다. 내가 어리석은 또 다른 질문을했다는 것을 알았습니다! 나는 7 분이 경과하고 받아 들일 수있을 때 대답을 표시 할 것입니다. :) – tonytony