本文实例讲述了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 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):
commissionworker constructor, takes first and last names,
salary, commission and quantity
employee.__init__(self, first, last)
self.salary = self._checkpositive(float(salary))
self.commission = self._checkpositive(float(commission))
self.quantity = self._checkpositive(quantity)
def earnings(self):
compute the commissionworker's pay
return self.salary + self.commission * self.quantity
def __str__(self):
string representation of commissionworker
return %17s: %s % (commission worker,
employee.__str__(self))
class pieceworker(employee):
pieceworker class, inherits from employee
def __init__(self, first, last, wage, quantity):
pieceworker constructor, takes first and last names, wage
per piece and quantity
employee.__init__(self, first, last)
self.wageperpiece = self._checkpositive(float(wage))
self.quantity = self._checkpositive(quantity)
def earnings(self):
compute pieceworker's pay
return self.quantity * self.wageperpiece
def __str__(self):
string representation of pieceworker
return %17s: %s % (piece worker,
employee.__str__(self))
class hourlyworker(employee):
hourlyworker class, inherits from employee
def __init__(self, first, last, wage, hours):
hourlyworker constructor, takes first and last names,
wage per hour and hours worked
employee.__init__(self, first, last)
self.wage = self._checkpositive(float(wage))
self.hours = self._checkpositive(float(hours))
def earnings(self):
compute hourlyworker's pay
if self.hours return self.wage * self.hours
else:
return 40 * self.wage + (self.hours - 40) * \
self.wage * 1.5
def __str__(self):
string representation of hourlyworker
return %17s: %s % (hourly worker,
employee.__str__(self))
# main program
# create list of employees
employees = [ boss(john, smith, 800.00),
commissionworker(sue, jones, 200.0, 3.0, 150),
pieceworker(bob, lewis, 2.5, 200),
hourlyworker(karen, price, 13.75, 40) ]
# print employee and compute earnings
for employee in employees:
print %s earned $%.2f % (employee, employee.earnings())输出结果如下:
boss: john smith earned $800.00
commission worker: sue jones earned $650.00
piece worker: bob lewis earned $500.00
hourly worker: karen price earned $550.00
希望本文所述对大家的python程序设计有所帮助。