python3:面向对象(多态和继承、方法重载及模块)
1、多态
同一个方法在不同的类中最终呈现出不同的效果,即为多态。
class Triangle:def __init__(self,width,height):self.width = widthself.height = heightdef getArea(self):area=self.width* self.height / 2return areaclass Square:def __init__(self,size):self.size = sizedef getArea(self): # 同一个方法在不同的类中最终呈现出不同的效果,即为多态area = self.size * self.sizereturn areaa=Triangle(5,5)
print(a.getArea())
b=Square(5)
print(b.getArea())
执行效果如下:
2、继承
(1)子类可以继承父类所有的公有属性和公有方法:
class Father:money = 1000000def drive(self):print('I can drive a car!')class Son(Father):passtom = Father()
print(tom.money)
tom.drive()print('#'*50)jerry=Son()
print(jerry.money)
jerry.drive()
执行后:
(2)对于父类的私有属性,子类不可以访问。
(3)对于多继承
多个父类的有相同的某个属性,子类只继承第一个父类的属性。
3、方法重载
子类重写父类的方法:
class Father:money = 1000000__money = 9999999def drive(self):print('I can drive a car!')class Son(Father):def drive(self): #重载父类的方法drive()print('I can drive a tank!')Father.drive(self) #在子类中直接调用父类的方法drive()def pay(self):print(self.money)tom = Father()
print(tom.money)
tom.drive()print('#'*50)jerry = Son()
jerry.drive()
执行后:
重载运算符
class Mylist: #定义类Mylist__mylist = []def __init__(self,*args):self.mylist = []for arg in args:self.__mylist.append(arg)def __add__(self,x): #定义操作+for i in range(0,len(self.__mylist)): #依次遍历列表,执行加操作self.__mylist[i] = self.__mylist[i]+xreturn self.__mylistdef __sub__(self,x):passdef __mul__(self,x):passdef __div__(self,x):passdef __mod__(self,x):passdef __pow__(self,x):passdef __len__(self,x):passdef show(self): #显示列表中的数值print(self.__mylist)if __name__ == '__main__': #通过name的内置属性l = Mylist(1,2,3,4,5) #定义一个列表对象l+10l.show()
4、模块
从交互解释器导入包,并调用包中的类和方法。如下:
>>> import claMylist
>>> dir(claMylist)
['Mylist', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
>>> import claMylist as cml
>>> ml=cml.Mylist(6,7,8,9,10)
>>> ml
<claMylist.Mylist object at 0x00000263F78D9240>
>>> ml.show() #执行类中的方法show()
[6, 7, 8, 9, 10]
>>> ml+100
[106, 107, 108, 109, 110]
>>> x=ml+100 #将执行+操作后的值存放在x中
>>> x
[206, 207, 208, 209, 210]
>>>
转载于:https://www.cnblogs.com/Paul-watermelon/p/11232219.html
python3:面向对象(多态和继承、方法重载及模块)相关推荐
- JAVA基础-U7 面向对象编程(基础部分)-方法重载
方法重载(Overload) 基本介绍 java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致 eg. System.out.println(); //out是PrintStream类型 ...
- Android基础之Java多态、继承、重载和重写的区别
[免费]全网独家:这是一份非常值得珍藏的Android知识体系!!! 一.继承(inheritance) 1.1 继承是什么 简而言之,继承就是在现有类的基础上,增加新的方法或者重写基类的方法的一种方 ...
- java面向对象解决兔子问题_7-Java面向对象-多态
多态: 多种形态,面向对象的核心,封装和继承都是为多态而服务的. 位于最后也是最重要的. 本次课程围绕: 什么是多态? 多态在程序设计中的优势? 在Java中如何实现多态? 多态的概念 猫,狗,兔子都 ...
- Java基础【之】面向对象编程(封装、继承(extends、方法重写、super)、多态(动态绑定、重载/重写)、代码实现)
Java基础[之]面向对象编程(封装.继承.多态.代码实现) 1.封装 2.继承 2.1.extends 2.2.方法重写 2.3.super 3.多态 3.1.对象的多态.方法的多态 3.2.动态绑 ...
- Java面向对象基础学习笔记(构造、重载、继承、多态、抽象类、接口、模块)
Java面向对象编程包含哪些内容? 怎么理解面向对象编程? 现实生活中,我们定义了"人"的抽象概念,这就是类class,生活中的每一个具体的人就是实例instance. class ...
- python完全支持面向对象编程思想_面向对象的编程思想和Python的继承和多态,特殊方法,引用计数...
面向对象的编程思想和Python的类,访问和属性,继承 在上一文中我们了解到了,私有的属性的访问方式:实例名._类名__私有属性名. 一.私有的属性如何对外提供公有的取值和赋值方法呢?提供公有的方法作 ...
- 学习-Java继承和多态之方法重载
第1关:学习-Java继承和多态之方法重载 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:使用重载方法为 Student 类创建三个构造方法. 相关知识 Java 中重载是指一个类中可以 ...
- java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类
1.this关键字 this表示当前类对象的地址空间值的引用.就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量.即用this.变量名 = 变量名 区分. 2.s ...
- 面向对象三大特性 -- 继承,封装,多态
继承: 1.继承是面向对象程序设计能够提供软件开发效率的重要原因之一: 2.继承是具有传递性的: 3.继承来的属性和方法时隐式的,也就是在本类里面是看不见的: 4.一个类只能有一个父类,也就是只能单继 ...
最新文章
- FTP 命令的使用详解
- 大厂面试篇:五轮面试,阿里offer到手!
- 解析错误:相邻的JSX元素必须包装在一个封闭标签中
- 机器学习基础-岭回归-06
- mysql序列号发生器
- PostgreSQL 常见操作
- 线程导入大数据入库_大数据处理及分析该怎么做?用这款数据分析软件轻松搞定...
- VSTO 2005 项目的布署和运行
- SQL查询-将列转换成字符串(for xml path)
- wps右下角弹窗广告(WPS购物或叫WPS热点)彻底关闭
- java 群发邮件_java群发邮件
- 浏览器端技术体系概览 -- 前端开发的七种武器
- 线性回归中常见的一些统计学术语(RSE RSS TSS ESS MSE RMSE R2 Pearson's r)
- order by、distribute by、sort by、group by、partition by
- 思科三层交换机开启ipv6路由功能_网络工程实战之三层交换机配置IPv6 DNS 示例...
- Matlab------如何控制matlab中的数据输出格式
- 从语音信号处理角度解读mic规格书
- 什么是编程,学习编程的意义是?
- mac安装配置zsh
- scrapy抓取淘宝女郎 1
热门文章
- CCF 201809-1 买菜
- ActiveSupport::Concern 和 gem 'name_of_person'(300✨) 的内部运行机制分析
- 在eclipse中指定启动时java的位置
- C# mysql 插入数据,中文乱码
- Kubectl指令集
- 使用Spring Task完成定时任务
- 升级xcode5.1 iOS 6.0后以前的横屏项目 变为了竖屏
- Lecture 19 Shortest Paths III
- Lecture 3 Divide and Conquer
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]