Python之面向对象(三)继承详解以及面向对象三大特性

6.4 面向对象之:继承

  1. 面向对象的继承简介:继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。
  2. 继承例子:
    • class Person
         def __init__(self,name,sex,age):
              self.name=name
              self.sex=sex
              self.age=age
      class Cat:
          def __init__(self,name,sex,age):
              self.name=name
              self.sex=sex
              self.age=age
      class Dog:
          def __init__(self,name,sex,age):
              self.name=name
              self.age=age
              self.sex=sex
      #继承的用法
      class Aniaml(object):
          def __init__(self,name,sex,age):
              self.name=name
              self.age=age
              self.sex=sex
      class Person(Aniaml):
          pass
      
      class Cat(Aniaml):
          pass
      
      class Dog(Aniaml):
          pass
    • 继承:增加了类的耦合性,减少了重复代码,使得代码更加规范化,合理化
  3. 继承的分类
    • 就上面的例子:Aminal叫做父类,基类,超类;Person Cat Dog:子类,派生类
    • 补充:python2x版本中存在两种类:
      • 经典类,在python2.2之前使用的经典类。经典类是不继承object类;
      • 新式类:在python2.2之后出现了新式类,新式类的特点是继承object类
      • python3中使用的都是新式类。如果不继承任何父类,就默认继承object类

6.5 面向对象的三大特性

  1. python面向对象的三大特性:继承、封装、多态
  2. 封装简介:把很多数据封装到?个对象中. 把固定功能的代码封装到?个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想.
    • 封装:顾名思义就是将内容封装到某个地方,然后再去调用被疯转在某物的内容,所以,在使用面向对象的封装特性时,需要:将内容封装到某处,从某处调用被封装的内容
    • 例子:
      • class foo:
            def __init(self,name,sex):
                self.name=name
                self.sex=sex
        obj=foo("wupeiqi","男")
        #self是一个形式参数,当执行obj=foo("wupeiqi","男")时,self等于obj,所以内容被封装到obj里,每个对象都有name和sex属性
        #调用 通过self间接调用 通过对象调用
  3. 继承简介:?类可以?动拥有?类中除了私有属性外的其他所有内容. 说?了, ??可以随便?爹的东?.
  4. 多态简介:同?个对象, 多种形态. 这个在python中其实是很不容易说明?的
    • 多态:同一个度地下,多种形态。python默认支持多态
    • 例子:
    • #在java或者c#定义变量或者给函数传值时必须定义数据类型,否则就报错
      def func(int a)
         print('a必须是数字')
      #而类似于python这种弱类型定义语言,a可以是任意形态(str,int,object等等)
      def func(a):
          print('a是什么都可以')
  5. 鸭子类型:python中有一句谚语说得好,你看起来像鸭子,那么你就是鸭子
    • 例子:
    • class A:
          def f1(self):
              print('in A f1')
      
          def f2(self):
              print('in A f2')
      
      class B:
          def f1(self):
              print('in A f1')
      
          def f2(self):
              print('in A f2')
      
      obj = A()
      obj.f1()
      obj.f2()
      
      obj2 = B()
      obj2.f1()
      obj2.f2()
      # A 和 B两个类完全没有耦合性,但是在某种意义上他们却统一了一个标准。
      # 对相同的功能设定了相同的名字,这样方便开发,这两个方法就可以互成为鸭子类型。
      
      # 这样的例子比比皆是:str  tuple list 都有 index方法,这就是统一了规范。
      # str bytes 等等 这就是互称为鸭子类型。

原文地址:https://www.cnblogs.com/zhangdadayou/p/11415352.html

时间: 2024-11-08 20:48:36

Python之面向对象(三)继承详解以及面向对象三大特性的相关文章

javascript 特殊的面向对象以及继承详解(入门篇)

学习Javascript人,大多听说一句话叫js里面一切都是对象.我刚开始接触javascript面向对象编程时候,挺乱的,我当时习惯性的把PHP的面像对象思想套用在js上面,其实js的面向对象与传统的面向对象还是有很多区别的.这里就不再去讲解基础的面向对象是什么了,看这篇文章就默认大家都知道面向对象的概念. 首先,在目前的js版本中,依然没有引入class这个关键词,js里面没有类的概念,其他语言在实例化一个对象的时候,都是使用new 类名来得到实例,而js由于没有class,因此它的面向对象

Python安装、配置图文详解

原文地址:http://weixiaolu.iteye.com/blog/1617440 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(IDE) 1. 在Eclipse中安装PyDev插件 2. 配置Python Interpreters 四. 创建Python Project 五. 编写HelloWorld 六. 小结 一. Python简介: Python在Linux.wi

Python安装、配置图文详解(转载)

Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(IDE) 1. 在Eclipse中安装PyDev插件 2. 配置Python Interpreters 四. 创建Python Project 五. 编写HelloWorld 六. 小结 一. Python简介: Python在Linux.windows.Mac os等操作系统下都有相应的版本,不管在

Python中格式化format()方法详解

Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参数使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加; 使用":", 指定代表元素需要的操作, 如":.3"小数点三位, ":8"占8个字符空间等; 还可以添加特定的字母, 如: 'b' - 二进制. 将数字以2为基数

Java面向对象之异常详解

目录 Java面向对象之异常[一] Java面向对象之异常[二] 捕获异常的规则 访问异常信息 异常对方法重写的影响 finally详解 Java面向对象之异常[一] Java面向对象之异常[二] 往期回顾:上一篇我们大致总结了异常的继承体系,说明了Exception和Error两个大类都继承于顶级父类Throwable,又谈到编译时异常与运行时异常的区别,谈到异常的处理方式,以及处理方式中关于捕获方式的几种类型. 本篇承上启下,将从异常的其余部分进行总结,但是毕竟现在处于初学阶段,未必能够体会

Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接受这是我一直努力的方向.后面会有稍微复杂点的项目!让我们一起期待吧! 此文我将跟大家介绍一下Asp.Net MVC3 Filter的一些用法.你会了解和学习到全局Fileter,Action Filter等常用用法. 第一节:Filter知识储备 项目大一点总会有相关的AOP面向切面的组件,而MVC

Python中的getattr()函数详解:

Python中的getattr()函数详解: getattr(object, name[, default]) -> value Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y. When a default argument is given, it is returned when the attribute doesn't exist; without it, an exception i

python命名空间与闭包函数详解

python命名空间与闭包函数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的知识点如下: 1>.三元运算 2>.命名空间 3>.global与nonlocal 4>.函数即变量 5>.嵌套函数 6>.闭包函数 一.三元运算 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yi

python中的tcp示例详解

python中的tcp示例详解  目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. TCP通信需要经过创建连接.数据传送.终止连接三个步骤. TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发