本文实例讲述了python继承和抽象类的实现方法。分享给大家供大家参考。
具体实现方法如下:
代码如下:#!/usr/local/bin/python
# Fig 9.9: fig09_09.py
# Creating a class hierarchy with an abstract base class.
class Employee:
"""Abstract base class Employee"""
def __init__(self, first, last):
"""Employee constructor, takes first name and last name.
NOTE: Cannot create object of class Employee."""
if self.__class__ == Employee:
raise NotImplementedError, /
"Cannot create object of class Employee"
self.firstName = first
self.lastName = last
def __str__(self):
"""String representation of Employee"""
return "%s %s" % (self.firstName, self.lastName)
def _checkPositive(self, value):
"""Utility method to ensure a value is positive"""
if value < 0:
raise ValueError, /
"Attribute value (%s) must be positive" % value
else:
return value
def earnings(self):
"""Abstract method; derived classes must override"""
raise NotImplementedError, "Cannot call abstract method"
class Boss(Employee):
"""Boss class, inherits from Employee"""
def __init__(self, first, last, salary):
"""Boss constructor, takes first and last names and salary"""
Employee.__init__(self, first, last)
self.weeklySalary = self._checkPositive(float(salary))
def earnings(self):
"""Compute the Boss's pay"""
return self.weeklySalary
def __str__(self):
"""String representation of Boss"""
return "%17s: %s" % ("Boss", Employee.__str__(self))
class CommissionWorker(Employee):
"""CommissionWorker class, inherits from Employee"""
def __init__(self, first, last, salary, commission, quantity):
新闻热点
疑难解答