【文档说明】图解Python面向对象课件.pptx,共(17)页,359.775 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44436.html
以下为本文档部分文字说明:
图解Python面向对象本章主讲内容•1.类对象的内存分析图•2.类对象所包含的内容•3.创建实例对象的执行过程•4.面向对象的三大特征•5.动态语言与静态语言之间关于多态的区别•6.特殊方法•7.对象的引用计数类对象•Python中类的定义•对象的三个组成部分•标识•类型
•值•属性•方法•内置函数dir()获得类对象或实例对象所有可以访问的属性或方法的列表classPerson(object):pass类对象的结构•类的结构•方法•实例方法•类方法•静态方法动态绑定属性和方法•Python是动态语言,在创建实例对象之后,可以动态的绑定属性和或方
法•特殊属性__slots可以提高属性的访问速度•访问实例对象的属性是通过访问实例对象的特殊属性__dict__来实现的•在类对象中定义了特殊属性__slots__,实例对象就不会再创建特殊属性__dict__•因此在类对象中定义特殊属性__slots__可以减少内存消耗•动态绑
定的属性和方法只能是__slots__中存在的字符串元素•重新__str__()方法,显示属性值创建实例对象的执行过程•自动调用特殊函数__new__创建对象•自动调用特殊函数__init__初始化实例对
象的属性面向对象的三大特征•面向对象的三大特征•封装:提高程序的安全性•继承:提高代码的复用性•多态:提高程序的扩展性和可维护性•继承的特性:•多继承性和传递性•MRO全称为MethodResoluti
onOrder(方法解析顺序)它指的是对于一颗类继承树,当调用最底类对象所对应的实例对象的方法时,Python解释器在类继承树上搜索方法的顺序。•可以通过最底层类对象的mro()方法或特殊属性__mro__去查看类的继承关系封装•封装:属性的私有化,但是Python没有明确的
权限修饰符,完全靠程序员自觉,但是私有属性可以使用__开头,不希望被访问的方法也可以使用__定义•提供getter和setter方法对__定义的属性进行赋值和取值多态•多态:简单地说,多态就是“具有多种形态
”它指的是“即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态地决定调用哪个对象中的方法。•如果子类不存在指定名称的方法,回到父类中去查找,如果在父类中找到了,则调用父类中的方法
。静态语言和动态语言关于多态的区别•静态语言静态语言,实现多态有三个必要条件•1.继承•2.重写•3.父类类型的变量引用父类或子类类型的实例对象•动态语言动态语言的多态崇尚“鸭子类型”:当看到一只鸟走起来像鸭子、游泳起来像鸭子,叫起来也像鸭子,那
么这只鸟就可以被称为鸭子。在鸭子类型中,我们并不关心对象是什么类型,到底是不是鸭子,只关心对象的行为。特殊方法•为什么两个整数或字符串可以相加?•为什么字符串和列表可以调用内置函数len()获取字符串中字符的个数或列表中
元素的个数?•为什么字符串、列表、字典等可以使用for-in进行迭代呢?print(10+20)print(len('Python'))print(len([10,203,30]))foriin'Python':print(i)forkeyin{'a':1,'b':2}
:print(key)自定义类对象实列特殊方法•实现__add__()方法,可以实现两个自定义类对象的实例对象之间的相加操作•实现__len__()方法,可以实现计算自定义对象的长度•实现__iter__()方法和__next__()方法可以实现自定义类对象的实例对象的的迭代遍历对象的
引用计数•对象引用加1的情况•对象赋值给变量•引用对象的变量赋值给另一个变量•对象作为容器(列表,集合)中的元素•对象作为函数调用时的实参•对象引用减1的情况•对象离开它的作用域,例如:对象所在的函数执行完毕•对象的引用被显示销毁•引用对象的变量被赋予新的对象•从容器中删除
对象,或对象所在的容器被销毁对象的引用计数•对象引用减1的情况•对象离开它的作用域,例如:对象所在的函数执行完毕•对象的引用被显示销毁•引用对象的变量被赋予新的对象•从容器中删除对象,或对象所在的容器被销毁本章主讲内容•1.类对象的内
存分析图•2.类对象所包含的内容•3.创建实例对象的执行过程•4.面向对象的三大特征•5.动态语言与静态语言之间关于多态的区别•6.特殊方法•7.对象的引用计数