My Python 애플리케이션에는 많은 추상 클래스와 구현이 포함되어 있습니다. 예를 들어 :Python 클래스가 추상 기본 클래스인지 콘크리트인지 확인
import abc
import datetime
class MessageDisplay(object):
__metaclass__ = abc.ABCMeta
@abc.abstractproperty
def display(self, message):
pass
class FriendlyMessageDisplay(MessageDisplay):
def greet(self):
hour = datetime.datetime.now().timetuple().tm_hour
if hour < 7:
raise Exception("Cannot greet while asleep.")
elif hour < 12:
self.display("Good morning!")
elif hour < 18:
self.display("Good afternoon!")
elif hour < 20:
self.display("Good evening!")
else:
self.display("Good night.")
class FriendlyMessagePrinter(FriendlyMessageDisplay):
def display(self, message):
print(message)
FriendlyMessagePrinter
우리가 사용할 수있는 구체적인 클래스 ...
FriendlyMessagePrinter().greet()
Good night.
...하지만 MessageDisplay
및 FriendlyMessageDisplay
추상 클래스가 하나가 될 것 인스턴스화하는 시도이다 오류 :
TypeError: Can't instantiate abstract class MessageDisplay with abstract methods say
주어진 클래스 객체는 (인스턴스화 할 수없는) 추상 클래스인가?
Ref. 일반 독자에게 ABC : http://docs.python.org/2/library/abc.html –