Python之类的继承和多态
来源:互联网 发布:i3电脑能编程吗 编辑:程序博客网 时间:2024/06/05 16:47
1.派生类可以继承父类的公有成员,但是不能继承其私有成员。如果需要在派生类中调用基类的方法,可以使用内置函数super()#super(子类名,self).__init__(参数1,参数2,参数3) 或者通过‘’基类名.方法名()' #基类名.__init__(self,参数1,参数2,参数3) 的方式来说实现。
Python支持多继承,若父类中有相同的方法名,而在子类使用时没有指定父类名,则Python解释器将按照从左到右的顺序搜索。
2.抽象类和多态
抽象类是包含抽象方法的类,抽象方法不包含任何可实现的代码,只能在其子类中实现抽象函数的代码。
定义抽象类:python通过类库实现抽象类,因此在定义抽象类前需要从类库abc中导入ABCMeta类和abstractmethod类。
from abc import ABCMeta,abstractmethod
ABCMeta类Metaclass for defining Abstract Base Class的缩写,是抽象基类的元类。所谓元类就是创造类的类。在定义抽象类时只需要在类中增加如下代码:
__metaclass__ = ABCMeta
即指定该类的元类是ABCMeta,例如:
class myabc(object):
__metaclass__ = ABCMeta
在抽象类里可以定义抽象方法:
@abstractmethod
因为抽象函数不包含任何可实现的代码,因此其函数体通常使用pass
多态是指抽象类中定义的一个方法可以在其子类中可以重新实现,不同子类可以各不相同。
下面通过一个实例来演示抽象和多态:
#!/usr/bin/env python#coding=utf-8from abc import ABCMeta,abstractmethodclass Shape(object): __metaclass__ = ABCMeta def __init__(self): self.color = 'black'@abstractmethoddef draw(self):passclass Circle(Shape): def __init__(self,x,y,r): self.x = x self.y = y self.r = r def draw(self): print u'画圆:(%d,%d,%d)' %(self.x,self.y,self.r)class Line(Shape): def __init__(self,x1,y1,x2,y2): self.x1 = x1 self.y1 = y1 self.x2 = x2 self.y2 = y2 def draw(self): print u'画线:(%d,%d,%d,%d)' %(self.x1,self.y1,self.x2,self.y2)c= Circle(10,10,5)c.draw()l = Line(10,10,20,20)l.draw()
结果:
画圆:(10,10,5)
画线:(10,10,20,20)
- Python之类的继承和多态
- Python初学之类的继承和多态
- C++之类的继承和多态
- Python之类的构造和继承
- 黑马程序员-----OC学习之类的继承和多态
- Python基础篇之类的继承
- OC之类的继承
- C++之类的继承
- swift之类的继承
- Java之类的继承
- C++之类的继承
- Python面向对象之类的定义与继承
- python的继承和多态
- python 的继承和多态
- Python之类的重写和私有变量
- Kotlin 学习之类和继承
- Python 继承和多态
- python 继承和多态
- Android 屏幕分辨率
- [练习]如何用CSS进行网页布局
- 系统延迟及定时任务
- xmanday2 IDA逆向从入门到放弃
- 解决Python中浮点数计算结果不够精确的问题:decimal模块
- Python之类的继承和多态
- 【框架学习】SpringMVC上传下载文件
- Multinomial 回归多分类推导
- 最小拦截系统
- 求数组中任意连续位置元素和的最大值
- Ubuntu开发环境搭建(二)
- 算法-求二进制数中1的个数
- Solr学习总结
- matlab中的eig函数 ,isa函数