zoukankan      html  css  js  c++  java
  • 类的总复习

    类指的是一系列对象相同的特征与技能的结合体

    如何定义类

    先抽象,抽取对象之间相同的特征与技能

    再定义,

    定义类时会发生那些事情

    1.会产生一个类的名称空间

    2.会把类内部的多有名字,扔进该名称空间内

    注意:定义类时,就会执行类内部的代码,若语法不正确,则会报错

    如何产生对象

    调用类会产生一个对象,调用类的过程称之为类的实例化,对象称之为类的一个实例

    调用类时发生的事情

    1.调用类时会产生一个对象的名称空间

    2.会触发__init__,接着把对象与括号内所有的参数都传给__init__(),对象当作第一个参数

    3.在__init__内部没有,可以给对象添加属性

    对象的名字查找

    1先找对象自己有没有,

    2.没有就去类中找

    3.若此类是子类,会去父类中查找。

    对象的绑定方法

    类来调用,类内部的方法只是普通的函数,函数需要几个参数,就传入几个参数。

    由对象由来调用,会自动把对象当作第一个参数传入该方法。

    注意:不同对象的对象调用该绑定方法,会将不同的对象传入该绑定方法中

    一切皆对象

    在python中,一切皆对象

    python八大数据类型

    list, tuple, set, dict, float, int, bool, str

    内置函数:filter

    继承

    继承指的是新建类的方式,新建的类指的是子类或派生类,子类可以继承一个父类,父类又可以称之为基类或超类

    如何查找继承关系

    必须 ”先抽象,再继承“

    抽象:抽取相似的部分

    —先抽象:抽取类与类之间相同的特征与技能

    —再继承:确定好子类与父类,定义父类,父类中写类与类之间相同的特征与技能,子类继承父类的属性

    继承关系

    类是对象与对象之间的关系,类是一系列对象相同的特征与技能的结合体

    继承是类与类之间的关系,子类与父类是一种从属关系

    派生

    派生指的是子类继承父类的属性,并派生出自己的属性

    子类可以派生出自己的属性,并重用父类的属性

    1.__init__直接调用类,类名.属性的方式冲重用父类的属性

    2.super(),super().指向父类的名称空间,重用父类的属性

    注意:子类派生出与父类相同的属性,以子类为主

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

    1.先在对象中查找

    2.对象中没有,在类中查找

    3.类中没有,若类为子类,会在父类中查找

    4.对象查找属性,若子类有,不管父类有没有,以子类为准

    新式类与经典类

    新式类:继承object的类

    经典类:在python2中没有继承object的类

    钻石继承(菱形继承)

    新式类:广度优先

    经典类:深度优先

    组合

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

    组合的作用:与继承一样,解决代码冗余问问题

    继承的优点:编写的复杂程度没有组合高

    继承的缺点:耦合度太高,可扩展性差

    组合的优点:可以让类与类之间耦合,可扩展性高

    组合的缺点:编写复杂程度高于继承

    封装

    封装指的是把一堆属性,封装到对象中,对象就好比一个袋子,或一个容器

    优点:方便数据的存取,可以通过 对象.属性 的方法获取数据

    封装是面向对象的核心

    访问限制机制

    在类内部,凡是以__开头的属性,都会被隐藏,实际是变形成为 __类名__ 属性

    好处:可以对一些重要的数据进行隐藏,不轻易被直接调用,保证数据的安全,比如与金钱,用户信息相关的操作

    property

    python的内置的装饰器,主要给类内部的方法使用,使用他的目的是将类内部的方法(def方法名)变成了(def方法)

    注意:不能对被装饰过的方法属性修改

    多态

    同一种事物的多种形态

    多态的目的:是为了统一代码的编写规范

    多态的实现方式:

    继承:子类继承父类的特征

    抽象类:

    1.导入一个abc模块

    2.让父类继承一个(metaclass=abc.ABCMeta)

    3.给类内部所有方法加上一个@abc.abstractmethod

    子类继承抽象类,强制让子类继承父类的方法,缺一不可

    鸭子类型:

    只要你长得像鸭子,并且行为与鸭子一摸一样,呢么你就是鸭子

    同一种事物的类,都有相同的功能,该这些类都在内部定义相同名称的方法

    classmethod

    是一个方法,用来装饰在类内部的方法,可以让该方法变成类的绑定方法

    对象的绑定方法:由对象来调用,会将对象当作第一个参数传入该方法,不同的对象调用该方法,则会将不同的对象传入到该绑定方法中

    类的绑定方法:由类来调用,会将类当作第一个参数传入该方法。

    staticmethod

    是一个装饰器,可以装饰类内部的方法,使该方法既不绑定给对象,也不绑定给类,谁都可以调用,并且没有自动传值的效果

    简而言之,非绑定方法就是将普通方法放到类中使用

    面向对象高级

    isinstance

    判断一个对象是不是另一个类的实例

    issubclass

    判断一个类是不是另一个类的子类

    反射

    反射:通过字符串操作对象或类的属性

    hasattr:通过字符串,判断字符串是否是一个对象或类的属性

    getattr:通过字符串,获取对象的属性

    setattr:通过字符串,设置对象的属性

    delattr:通过字符串删除一个对象或类的属性

    魔法方法

    __new__   会在__init__执行前触发
    
    __init__   会在类被调用的时候触发
        
    __str__    会在打印的时候触发
    
    __getattr__   会在对象.属性时,属性没有的时候触发
    
    __setattr__   会在  对象.属性 = 属性值  的时候触发
    
    __del__   会在对象被注销前执行,该方法会在最后执行
     
    __call__    会在对象被调用的时候触发
    
  • 相关阅读:
    WCF基础教程之开篇:创建、测试和调用WCF
    程序员必须知道的几个Git代码托管平台
    2015继续任性——不会Git命令,照样玩转Git
    何必苦等VS2015?来看看VS2013下实现移动端的跨平台开发
    Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio
    (转)创建Graphics的三种方法
    sql自增长列重新从1计算
    IT之人生感悟
    c# 高效率导出多维表头excel
    SQL 之witn as语法
  • 原文地址:https://www.cnblogs.com/whkzm/p/11674277.html
Copyright © 2011-2022 走看看