Python类继承和多态原理解析


Posted in Python onFebruary 05, 2020

这篇文章主要介绍了python类继承和多态原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了。之前学C++的时候就把类、对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象。

就像说的,类有三个特征:封装、继承、多态。

1、封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限。

C++中的成员变量有public、private、ptotected。

在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的。并且private类不能被继承类引用,并且不允许直接访问。

2、继承:在定义一个类的时候可以从当前有的类中进行继承。

python是允许多继承的,并且在子类中拥有父类所有的成员变量和方法,为了缓解代码中的冗余,子类在父类的基础上增加的成员变量可以如下修改。

class Person(object):
  def __init__(self,name,sex):
    self.name = name
    self.sex = sex

class Child(Person):             # Child 继承 Person
  def __init__(self,name,sex,mother,father):
    Person.__init__(self,name,sex)    # 子类对父类的构造方法的调用
    self.mother = mother
    self.father = father

May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

3、多态:当子类继承父类之后,成员方法既可以重写也可以不重写。当调用的时候只要保证新方法编写正确,不用管原来的代码。

对扩展开放(Open for extension):允许子类重写方法函数
对修改封闭(Closed for modification):不重写,直接继承父类方法函数
python是一种动态语言,动态语言是在运行的时候确定数据类型的语言。变量在使用前不用声明,通常变量的类型是被复制的那个值的类型。

静态语言是在编译的时候变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前鼻血声明数据类型。

在类中,当要对成员变量进行约束的时候可以使用@property,python内置的@property装饰器是负责把一个方法变成属性调用

在实例属性操作的时候,就知道该属性很可能不是直接暴露的,而是通过getter和setter方法来实现的。还可以定义只读属性,只定义getter方法不定义setter就是一个只读属性

请利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution:

class Screen(object) :
  @property
  def width(self) :
    return self._width

  @width.setter
  def width(self,valuer) :
    if not isinstance(valuer,int):
      raise ValueError('score must be an integer')
    if valuer < 0 :
      raise ValueError('score must over zero')  
    self._width=valuer

  @property
  def height(self) :
    return self._height

  @height.setter
  def height(self,number) :
    if not isinstance(number,int) :
      raise ValueError('score must be an integer')
    if number < 0 :
      raise ValueError('score must be an zero')
    self._height = number

  @property
  def resolution(self):
    return self._width * self._height
s=Screen()
s.width = 1024
s.height = 768
print(s.resolution)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现文件按照日期命名的方法
Jul 09 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
利用python画一颗心的方法示例
Jan 31 Python
基于python元祖与字典与集合的粗浅认识
Aug 23 Python
python实现决策树分类算法
Dec 21 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
如何在Python 游戏中模拟引力
Mar 27 Python
Python selenium自动化测试模型图解
Apr 15 Python
python Matplotlib模块的使用
Sep 16 Python
Python解析微信dat文件的方法
Nov 30 Python
python基础之文件处理知识总结
May 23 Python
Python模块 _winreg操作注册表
Feb 05 #Python
python3操作注册表的方法(Url protocol)
Feb 05 #Python
Python tkinter模版代码实例
Feb 05 #Python
Python Scrapy框架第一个入门程序示例
Feb 05 #Python
python lambda函数及三个常用的高阶函数
Feb 05 #Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 #Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 #Python
You might like
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
node通过npm写一个cli命令行工具
2017/10/12 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
Python将多个excel文件合并为一个文件
2018/01/03 Python
python适合人工智能的理由和优势
2019/06/28 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
如何选择使用结构还是类
2014/05/30 面试题
Python里面search()和match()的区别
2016/09/21 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
中专生职业生涯规划书范文
2014/01/10 职场文书
《分一分》教学反思
2014/04/13 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
读书月活动方案
2014/05/22 职场文书
实习护士自荐信
2014/06/21 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle