python面向对象基本思想(详解Python:面向对象编程)
python面向对象基本思想
详解Python:面向对象编程面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度
python和java都是面向对象的语言。面向对象编程的特点数据封装、继承和多态
1.类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
在python中,定义类同样也是使用class关键字,class后面紧跟着的是类名,需要开头大写,之后的括号里表示的是继承的哪个类,即它的父类。
|
class Student( object ): pass |
我们可以自由地给这个变量绑定属性
|
>>>nick.name = 'Liu Ling Hao' >>>nick.name 'Liu Ling Hao' |
而之后定义的不同的函数则是方法。总结来说对象=属性+方法
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。此时就需要用到比较特殊的__init__方法。(int 前后各有两个下划线)
__init__方法的第一个参数永远是self,表示创建的实例本身。
|
class Student( object ): def __init__( self , name, score): self .name = name self .score = scor >>> bart = Student( 'Bart Simpson' , 59 ) >>> bart.name 'Bart Simpson' >>> bart.score 59 |
当有了__init__方法之后,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数
2.封装,继承和多态
面向对象编程的一个重要特点就是数据封装。
就像上面例子中的name和score,我们可以直接在类的内部定义的函数去访问,,比如可以添加一个数据或者对于一个列表进行排序,我们可以实现,但是我们并不知道它的内部是通过如何调节而实现的。
当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
继承的好处就是获得了父类的全部功能,对于子类而言,可以在父类的基础上接着写,更加方便
|
class Person( object ): def idea( self ): print ( 'study is happy' ) class Liu(Person): pass liu = Liu() liu.idea study is happy |
当然子类如果有和父类同样的方法时会自动覆盖掉父类的
多态:不同对象对同一方法响应不同的行动
|
>>> class Nick1: def name( self ): print ( "我是1" ) >>> class Nick2: def name( self ): print ( "我是2" ) >>>a = Nick1() >>>b = Nick2() >>>a.name 我是 1 >>>b.name 我是 2 |
使用的函数名虽然一样但是实现并不一样。
|
def run(animal): animal.run() animal.run() >>> run(Animal()) Animal is running... Animal is running... >>> run_twice(Dog()) Dog is running... Dog is running... |
多态的好处就是,当我们需要传入Dog或者其它动物时,我们只需要接收Animal类型就可以了,因为Dog都是Animal类型,然后,按照Animal类型进行操作即可。由于Animal类型有run()方法,因此,传入的任意类型,只要是Animal类或者子类,就会自动调用实际类型的run()方法,这就是多态
以上所述是小编给大家介绍的Python面向对象编程详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://blog.csdn.net/qq_43613144/article/details/89075989
- python表格导出为图片(python生成带有表格的图片实例)
- python图片识别文字代码(python批量识别图片指定区域文字内容)
- python3json序列化(Python3.5 Json与pickle实现数据序列化与反序列化操作示例)
- python的pickle用法(Python multiprocess pool模块报错pickling error问题解决方法分析)
- python与气象(使用Python和Prometheus跟踪天气的使用方法)
- python数据表教程(详解Python sys.argv使用方法)
- python里面的time如何用(详解python:time模块用法)
- python3yield使用教程(python中yield的用法详解——最简单,最清晰的解释)
- python函数式编程源码(python仿evething的文件搜索器实例代码)
- python处理excel基础教程第3讲(Python Excel处理库openpyxl使用详解)
- pythonbug生成图片(python实现海螺图片的方法示例)
- python转pdf教程(Python实现将HTML转成PDF的方法分析)
- Python实现模拟点击(用python实现刷点击率的示例代码)
- python核心编程和python基础教程(从0开始的Python学习014面向对象编程推荐)
- 12步轻松搞定python装饰器(Python3.5装饰器典型案例分析)
- python安装pil模板教程(详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决)
- 贾怀胤唱《白龙马》 炸场 了 没想到京剧还能这么玩(贾怀胤唱白龙马)
- 白龙马的改编学生版,快来看看(白龙马的改编学生版)
- 萌娃唱《白龙马》走红,那生动的小表情,网友直呼 简直是戏精(萌娃唱白龙马走红)
- 朱鹤松被不断认可,凤凰传奇玲花喊话岳云鹏,索要老朱演出门票(朱鹤松被不断认可)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
- 岳云鹏跟凤凰传奇谈心,说出了人生中最重要的三个人,这才成功(岳云鹏跟凤凰传奇谈心)
热门推荐
- mysql5.5.36版本介绍(WDCP控制面板升级mysql为5.7.11的方法)
- mysql not exists用法(mysql中EXISTS和IN的使用方法比较)
- 阿里云ecs集群怎么设置(“阿里云ECS服务器”使用别家CDN防护怎么设置IP白名单?)
- iis服务器如何搭建一个网站(配置IIS网站web服务器的安全策略配置解决方案)
- dedecms图集功能(DEDECMS给图集图片加上自动编号教程)
- sql字母通配符(详解SQL 通配符)
- 部署ssis包提示更改保护级别(SSIS 延迟验证方法)
- css style常用属性(CSS中的content属性使用教程)
- 常用的Chrome谷歌浏览器插件
- mysql如何删除外键约束数据(MySQL中外键的创建、约束以及删除)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9