zoukankan      html  css  js  c++  java
  • day_21

    回顾

    继承

    新建类的方式

    继承的目的

    减少代码冗余

    寻找继承的关系

    先抽象再继承

    什么是抽象

    抽取类相似的部分

    在继承背景下对象属性的查找顺序

    对象》子类》父类

    派生

    子类继承父类的属性,并且派生出自己新的属性

    子类派生出新的属性,并重用父类属性

    若子类新的属性与父类的属性相同,则以子类的为准

    重用父类的两种方式:

    1. 直接通过父类.__init__,将其当做普通的函数使用
    2. super().__init__指的是的父类的__init__

    新式类和经典类

    继承了object类都称之为新式类

    在python2中没有继承object的类称之为经典类

    钻石继承

    新式类:

    广度优先

    经典类:

    深度优先

    今日内容

    组合

    什么是组合

    组合指的是一个对象中的属性,是另一个对象。

    为什么要使用组合

    为了减少代码冗余

    如何使用组合

    class People:
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    class Teacher(People):
        def __init__(self, name, age, sex):
            super().__init__(name, age, sex)
    
    class Student(People):
        def __init__(self, name, age, sex):
            super().__init__(name, age, sex)
    
    
    # 日期类
    class Date:
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
    
        def tell_birth(self):
            print(f'''
            === 出生年月日 ===
            年: {self.year}
            月: {self.month}
            日: {self.day}
            ''')
    
    
    tea1 = Teacher('tank', 17, 'male')
    date_obj = Date(2002, 1, 1)
    # date_obj.tell_birth()
    # 将date对象赋值到tea1对象的date属性中
    tea1.date = date_obj
    tea1.date.tell_birth()
    

    总结:

    继承是类与类的关系,一种什么是什么的关系,子类与父类是从属关系

    组合是对象与对象的关系,一种什么有什么的关系,一个对象拥有另一个对象。

    封装

    什么是封装

    把一堆属性封装到一个对象中,对象可以通过“.”的方式获取属性

    为什么要封装

    方便存取

    如何封装

    在类内部,定义一堆属性

    通过 对象.属性=属性值

    访问限制机制

    什么是访问限制机制

    在类内部定义,凡是以__开头的数据类型与方法属性,都会被python内部隐藏起来,让外部不能“直接“访问类内部的以__开头的属性

    目的

    对重要数据获取的逻辑更加严谨,进而保证了数据的安全

    接口

    隐私属性可以通过封装一个接口,在接口内做业务逻辑的处理,再把数据返回给调用者

    注意:在python中,不会强制限制属性的访问,类内部__开头的属性,只是做了一种变形,弱项直接访问,调用变形后的名字即可

    property

    什么是property

    python内置的装饰器,主要是给类内部的方法使用

    为什么要用property

    讲类内部的方法(def方法名())变成了(def方法)

    在对象调用某个方法是,将对象.方法()变成对象.方法

    如何使用

    @property

    多态

    什么是多态

    多态指的是同一种事物的多种形态

    多态的目的

    统一子类编写的规范, 为了让使用者更方便调用相同功能的方法

    抽象类

    什么是抽象类

    abc模块 abstract_class

    使用抽象类的目的

    强制子类必须遵循父类的一套标准

    鸭子类型

    在不知道当前对象是何物的情况下,但是你长得像鸭子,那么你就是鸭子类型.

    在python中,不推荐使用抽象类强制限制子类的定义,但是推荐类都遵循鸭子类型.

    • 继承:
      耦合性太高,程序的可扩展性差
    • 鸭子类型:
      耦合度低,程序的可扩展性强
  • 相关阅读:
    mysql的安装、启动和基础配置 —— windows版本
    Navicat安装及简单使用
    期货黄金与现货黄金比较
    android 网络编程--socket tcp/ip udp http之间的关系
    socket、tcp、udp、http 的认识及区别
    Android数据传递的五种方法汇总
    android 应用程序Activity之间数据传递与共享的几种途径
    Android数据存储的五种方法汇总
    Android终端与服务器数据传输解决方案
    转载 解决Android与服务器交互大容量数据问题
  • 原文地址:https://www.cnblogs.com/maqiaobin/p/11654306.html
Copyright © 2011-2022 走看看