है मेरे पायथन एप्लिकेशन में कई सार कक्षाएं और कार्यान्वयन शामिल हैं। उदाहरण के लिए:निर्धारित करें कि कोई पाइथन क्लास एक सार बेस क्लास या कंक्रीट
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
मैं कैसे जांच सकता हूं कि कोई दिया गया वर्ग वस्तु एक (uninstantiatable) अमूर्त वर्ग है?
रेफरी। आकस्मिक पाठकों के लिए, एबीसी: http://docs.python.org/2/library/abc.html –