python3:面向对象(多态和继承、方法重载及模块)
1、多态
同一个方法在不同的类中最终呈现出不同的效果,即为多态。
class Triangle:
def __init__(self,width,height):
self.width = width
self.height = height
def getArea(self):
area=self.width* self.height / 2
return area
class Square:
def __init__(self,size):
self.size = size
def getArea(self): # 同一个方法在不同的类中最终呈现出不同的效果,即为多态
area = self.size * self.size
return area
a=Triangle(5,5)
print(a.getArea())
b=Square(5)
print(b.getArea())
执行效果如下:

2、继承
(1)子类可以继承父类所有的公有属性和公有方法:
class Father:
money = 1000000
def drive(self):
print('I can drive a car!')
class Son(Father):
pass
tom = Father()
print(tom.money)
tom.drive()
print('#'*50)
jerry=Son()
print(jerry.money)
jerry.drive()
执行后:

(2)对于父类的私有属性,子类不可以访问。
(3)对于多继承
多个父类的有相同的某个属性,子类只继承第一个父类的属性。
3、方法重载
子类重写父类的方法:
class Father:
money = 1000000
__money = 9999999
def 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]+x
return self.__mylist
def __sub__(self,x):
pass
def __mul__(self,x):
pass
def __div__(self,x):
pass
def __mod__(self,x):
pass
def __pow__(self,x):
pass
def __len__(self,x):
pass
def show(self): #显示列表中的数值
print(self.__mylist)
if __name__ == '__main__': #通过name的内置属性
l = Mylist(1,2,3,4,5) #定义一个列表对象
l+10
l.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]
>>>
python3:面向对象(多态和继承、方法重载及模块)的更多相关文章
- PHP面向对象编程——深入理解方法重载与方法覆盖(多态)
什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对 ...
- 论python3下“多态”与“继承”中坑
1.背景: 近日切换到python3后,发现python3在多态处理上,有一些比较有意思的情况,特别记载,供大家参考... 以廖老师的python3教程中的animal 和dog的继承一节的代码做例子 ...
- Python3 面向对象-类的继承与派生
1.什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类可称为基类或超类,新建的类称为派生类和或子类. 子类会遗传父类的属性,从而解决代码重用问题. ...
- C#面向对象(OOP)入门—第一天—多态和继承(方法重载)
面向对象是什么 面向对象是一种基于对象的编程方法,它取代了仅仅依靠方法和流程的编程方式.面向对象的编程语言中,对象(object)其实就是指特定类型.或某个类的实例.面向对象使得编程人员更容易组织和管 ...
- Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。
Python3 与 C# 面向对象之-继承与多态 文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...
- java基础疑难点总结之成员变量的继承,方法重载与重写的区别,多态与动态绑定
1.成员变量的继承 1.1要点 子类用extends关键字继承父类.子类中可以提供新的方法覆盖父类中的方法.子类中的方法不能直接访问父类中的私有域,子类可以用super关键字调用父类中的方法.在子类中 ...
- C# 继承、虚方法、方法重载和多态
继承:继承属于单继承,只能继承一个父类. 继承的一个结果是派生于基类的子类在方法和属性上有一定的重叠. 继承只能够同时继承与一个基类:可以同时继承一个基类和多个接口,但是基类必须放在第一个.(注:C# ...
- 【基础】Equal方法、面向对象-多态-继承-封装
package Test; public class L3_1 { public static void main(String[] args) { C c1=new C(100); C c2=new ...
- 四. Java继承和多态3. 继承中的方法的覆盖和重载
在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...
随机推荐
- VS2012 BIDS之Reporting Service/SSRS 项目
最近资讯部门需要:网页/sharepoint提供事实表RawData下载功能,以下是项目大概: 工具:VS(BIDS)Report Designer+Reporting Service配置管理器
- xpath路径的写法
关于xpath路径的写法 1.选取节点 表达式 描述 nodename 选取此节点的所有子节点. / 从根节点选取. // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. . 选取当前节点 ...
- SpringBoot第二十二篇:应用监控之Actuator
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11226397.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 很多文章都 ...
- Linux系统安装jdk——rpm版
这里简单地阐述一下rpm.deb.tar.gz的区别. rpm格式的软件包适用于基于Red Hat发行版的系统,如Red Hat Linux.SUSE.Fedora. deb格式的软件包则是适用于基于 ...
- vue教程(五)--路由router介绍
一.html页面中如何使用 1.引入 vue-router.js 2.安装插件 Vue.use(VueRouter) 3.创建路由对象 var router = new VueRouter({ // ...
- ASP.NET Core MVC 之布局(Layout)
1.什么是布局 布局通常包含常见的用户界面元素,例如应用头,导航或菜单元素和页脚,如图: 常见的HTML结构(例如脚本和样式表)也经常被应用程序中许多页面使用.所有这些共享元素都可以在布局中定义,然后 ...
- Jquery 小结
1. 名词解释 实例对象:var p1=new Person(); p1就是实例对象 构造:function Person(){} 原型对象:在 JavaScript 中,每当定义一个对象(函数也是 ...
- 在eclipse中创建Web项目中没有web.xml的解决方法
右键点击项目 → “Java EE Tool” → “Generate Deployment descriptor stub” 即可生成web.xml文件
- 【iOS】Your account already has a valid ios
打包内测的时候遇到了这个问题,如图所示: 官网解决办法: If the certificate already exists in Member Center, a “Your account alr ...
- 安装使用xen虚拟化工具
换了一家新公司,需要拿出一套虚拟化方案,就把业界的主流虚拟化技术划拉了一遍,给领导交了一份报告,具体的技术部分已经在之前的随笔里了,本篇文章主要介绍的是xen虚拟化工具的安装: Xen官方部署文档:h ...