单重继承与多态

class Car(object):def __init__(self, name, size=10):self.name = name# 私有属性self.__size = sizedef run(self):print(self.name, "car is running")class GasCar(Car):def run(self):print(self.name, self.__size, "gas is burning")class OilCar(Car):def run(self):print(self.name, self.__size, "oil is burning")def run_twice(here):here.run()here.run()gas_car = GasCar("奔驰")
oil_car = OilCar("路虎")gas_car.run()
oil_car.run()# 多态测试
print(isinstance(gas_car, Car))
print(isinstance(oil_car, Car))
run_twice(gas_car)

总结:子类对象确实拥有了父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问到的,只是拥有。

多态:多态是通过子类重写父类的方法中体现出来的。对于C++,要想实现方法的重写,需要使用virtual关键字,以实现动绑定。Python中多态的实现,便是通过virtual进行实现的。多态体现的继承体系中的多态。在非继承体系中,python也有“”“feel-like object”类型。这种操作能够实现的原因便是python是一种动态语言类型。这种特性,就像是函数之间的调用,不管你只要有该方法,不管是哪个类型中的,都能够实现调用。

class F1:pass# 假设,S1是我们的正统类,它继承于根正苗红的F1,是我们的正统类
class S1(F1):def show(self):print('S1.show')# S2是路人甲,是个歪瓜裂枣,但是他自己也有一个叫show的方法。
class S2:def show(self):print('S2.show')# 在Java或C#中定义函数参数时,必须指定参数的类型,也即是说,我们如果用
# Java写下面的Func,需要告知,obj是F1类还是其他什么东西。
# 如果限定了F1,那么S2是不可以被采纳的。
# 然而,在Python中,一切都是Obj,它不care你到底是什么类,直接塞进去就可以def Func(obj):"""Func函数需要接收一个F1类型或者F1子类的类型"""obj.show()s1_obj = S1()
Func(s1_obj) # 在Func函数中传入S1类的对象 s1_obj,执行 S1 的show方法,结果:S1.shows2_obj = S2()
Func(s2_obj) # 在Func函数中传入Ss类的对象 ss_obj,执行 Ss 的show方法,结果:S2.show

多重继承

#!/usr/bin/python3# 类定义
class People:# 定义基本属性name = ''age = 0# 定义私有属性,私有属性在类外部无法直接进行访问__weight = 0# 定义构造方法def __init__(self, n, a, w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 说: 我 %d 岁。" % (self.name, self.age))# 单继承示例
class Student(People):grade = ''def __init__(self, n, a, w, g):# 调用父类的构函People.__init__(self, n, a, w)self.grade = g# 覆写父类的方法def speak(self):print("%s 说: 我 %d 岁了,我在读 %d 年级" % (self.name, self.age, self.grade))# 另一个类,多重继承之前的准备
class Speaker:topic = ''name = ''def __init__(self, n, t):self.name = nself.topic = tdef speak(self):print("我叫 %s,我是一个演说家,我演讲的主题是 %s" % (self.name, self.topic))# 多重继承
class Sample(Speaker, Student):a = ''def __init__(self, name, age, weight, grade, topic):Student.__init__(self, name, age, weight, grade)Speaker.__init__(self, name, topic)test = Sample("胡歌", 25, 80, 4, "Python")
# 方法名同,默认调用的是在括号中排前地父类的方法
test.speak()

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

Python系列9——类和对象(3)相关推荐

  1. Python之面向对象类和对象

    Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object):"""类里定义一类事物共同的技能.可以是变量,也可是函数.& ...

  2. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  3. python代码学习——类与对象提升(继承、超继承,类的例题,魔术方法)

    python代码学习--类与对象提升 继承 继承的特殊属性: 代码示例 方法的重写和覆盖(overrrid) 总结 超继承 继承中的初始化 多继承 例题 类的魔术方法 哈希(hash)和eq方法 bo ...

  4. 刻意练习:Python基础 -- Task10. 类与对象

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  5. 【Python教程】类及对象教程

    一.类创建 class Animal:def setName(self,name):self.name=namedef getName(self):return self.name#创建动物猫的对象 ...

  6. python中的类和对象

    一.类和对象 类和对象和概念 类:共性事物的抽象,是对某一类具有共同事物的描述,是具有相同属性和方法的集合 对象:类的实例,是共性事物的一个体现,是这类事物中的每个个体 总结: 类是对象的模板,对象是 ...

  7. python中的类与对象

    参考文章:Python的类和对象 入门级讲解(简单粗暴)

  8. python多个对象调用类方法、且之间有联系_趣味解读Python面向对象编程 (类和对象)...

    一.面向对象简介 考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介绍.而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁. 用我们的现实思维方式该怎么用程序表达呢? 面向 ...

  9. Python入门--创建类的对象

    class Student:native_pace = '山东' # 直接写在类里的变量称为类属性# 初始化方法def __init__(self, name, age):self.na = name ...

  10. python编程基础—类与对象

    1.类的声明与定义 Python 是一门面向对象的语言. 面向对象编程 - Object Oriented Programming(简称 OOP)是一种编程思想,在面向对象编程中,把对象作为程序的基本 ...

最新文章

  1. 中文地址转英文地址网站_SSL证书可能让你网站源IP地址暴露
  2. 基于BASYS2的VHDL程序——交通灯(状态机版)
  3. 在应用程序中实现对NandFlash的操作
  4. 报错日常——Tomcat45秒超时问题
  5. Java成神之路——CountDownLatch、CyclicBarrier
  6. linux中查找文件并合并文件
  7. 6.支付平台架构:业务、规划、设计与实现 --- 安全与风控
  8. TLSF内存分配器记录
  9. Linux指纹识别程序,指纹识别系统的安装
  10. linux在线语音播报功能
  11. 英文论文查重规则是什么?
  12. 谈谈大学两年的学习经历
  13. matlab对非平稳一维信号的小波变换
  14. 兼容NSR20F30NXT5G的小体积肖特基二极管
  15. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java康健医药公司进销存管理22jao
  16. sqlite多行插入_在SQLite中插入多行
  17. 矩阵中的代数重数与几何重数——课程笔记
  18. VBScriptVBS(五)VBScript中的类class详解
  19. Java“彭于晏,区块链技术与应用
  20. 【华为OD机试真题 python】机房布局【2023 Q1 | 200分】

热门文章

  1. word插入文件对象后,原文件中的阿拉伯数字尾注变成罗马数字尾注
  2. 计算机显示器一半有阴影,电脑显示器有阴影的解决方法,希望你们喜欢!
  3. paper report: DIRT-T
  4. 安卓手机使用Tasker实现应用级功能,屏幕翻译v9,翻译复制贴图
  5. 东莞:“风暴眼”中的世界工厂
  6. Sql Server 使用T-Sql 面向工业领域中商品的进货、销售、库存和记账等业务开发一个数据库应用系统:某客户、供应商以及他们之间往来的商品如汽车、电器等,需有效地记录这些商品进货、库存等账目,
  7. [从头读历史] 第253节 孔子和他的《春秋》 [BC722至BC658]
  8. 系统还原点设置被系统管理员禁用
  9. UE4 WebBrowser插件清除浏览器缓存
  10. 用计算机怎么算斜边,斜边计算公式