python中类的继承和多态
python中类的继承和多态
一、继承和多态
1、继承:继承主要用于描述类之间的关系的,一个类可以共享其他一个或者多个类的定义或者方法结构。比如说人类是一个类,男人和女人也可以作为分别一个类。把人类作为男人和女人的基类,男人和女人类可以作为子类,从基类人类继承相关的属性和方法:比如眼睛、头发、会走路、会吃饭等等。
2、多态:子类可以从基类继承相同的属性或者方法,比如相同的函数名,在子类中可以有不同的实现,即子类可以有自己的特殊性,这就叫做多态。比如:男人头发短,女人头发长。
二、继承和多态的作用
1、继承的作用:继承的作用是实现代码的复用,子类可以拥有基类的所有属性和方法。
2、多态的作用:基类中定义的一个方法,可以在子类中重新实现,以达到不同的操作。
三、测试示例
1、继承和多态
class Person: #基类
def init(self,name,age): #基类构造函数
self.name = name
self.age = agedef person_sex(self): #基类函数 pass
class Man(Person):
def init(self,name,age): #子类构造函数
Person.init(self,name,age) #子类调用基类中的构造函数
self.sex = ‘male sex’def make_money(self): #子类特性 print('man must make money') def person_sex(self): #子类重现实现基类的功能 print('man have the male sex')
class Woman(Person):
def init(self, name, age): #子类构造函数
Person.init(self, name,age) #子类调用基类中的构造函数
self.sex = ‘female sex’def do_house_work(self): #子类特性 print('woman look man do house work') def person_sex(self): #子类重现实现基类的功能 print('woman have the female sex')
man_p = Man(‘ISMILELI’,18) man_p.make_money() man_p.person_sex()
woman_p = Woman(‘LISA’,16) woman_p.do_house_work()
woman_p.person_sex()
运行结果:
2、抽象类和多态
1》、python可以实现抽象类,抽象类是只包含抽象方法的类,抽象类方法中没有任何实现代码,只能在其子类中实现抽象函数代码。
2》、python通过类库abc实现抽象类,因此在定义之前需要从类库abc中导入ABCMeta类和abstractmethod类。
3》、定义抽象类时需要在类中增加代码__metaclass__ = ABCMeta
4》、示例代码
from abc import ABCMeta,abstractmethod #导入需要的类库
class Animal(object):
metaclass = ABCMeta #增加定义抽象类需要的代码
def init(self):pass #不用实现@abstractmethod #定义抽象类需要的装饰符 def eat_food(self):pass#不用实现
class Dog(Animal):
def init(self):
self.name = ‘dog’def eat_food(self): #子类实现抽象类中的方法 print("%s like to eat bone!"%(self.name))
class Cat(Animal):
def init(self):
self.name = ‘cat’def eat_food(self): #子类实现抽象类中的方法 print("%s like to eat fish!"%(self.name))
dog_a = Dog() dog_a.eat_food()
cat_a = Cat() cat_a.eat_food()
运行结果:
说明:如有错误,欢迎指正。。。