python之面向对象编程

  • 面向对象和面向过程的基本概念

面向过程:侧重于怎么做。
1、把完成一个需求的所有步骤 从头到尾 逐步实现
2、根据开发要求,将某些功能独立的代码封装成一个又一个函数
3、最后完成的代码,就是顺序调用不同的函数。
特点:
注意步骤与过程,不注意职责分工;
如果需求复杂,代码会变的很复杂;
开发复杂项目,没有固定的套路,开发难度大

面向对象:谁来做?
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法。
1、在完成某一个需求前首先确定职责---要做的事(方法)
2、根据职责,确定不同的对象,在对象内部封装不同的方法(多个)
3、最后完成代码,就是顺序让不同的对象调用不同的方法。
特点:
1、注重对象和职责,不同的对象承担不同的职责
2、更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供固定的套路
3、需要在面向过程的基础上,在学习一些面向对象的语法

  • 熟悉面向对象编程

python java c++
类: 是对一群具有相同特征或行为的事物的一个统称,不能直接使用(比如:飞机没有制造图纸不能上天)
特征: 属性
行为: 方法
对象: 由类创建出来的一个具体的存在,可以直接使用(用图纸造出来的飞机可以飞上天)
在程序开发中: 应该先有类 再有对象
类的设计
1、类名 这类事物的名字,满足大驼峰命名法
大驼峰命名法
每一个单词首字母大写’单词与单词之间没有下划线
2、属性 这类创建出的对象有什么特征
2、这个类创建出的对象有什么样的行为

  • 初始化方法:init是python对象的内置方法
    init方法是专门用来定义一个类具有哪些属性和方法的。
    初始化方法
    我们现在已经知道了使用类名()就可以创建一个对象
    当使用类名()创建对象时,python解释器会自动执行以下操作:
    1、为对象在内存中分配空间--创建对象
    2、调用初始化方法为对象的属性设置初始值--初始化方法(init),这个初始化方法就是init方法,init是对象的内置方法
    init方法是专门用来定义一个类具有哪些属性的方法。

哪一个对象调用的方法,self就是哪一个对象的引用
在类封装的方法内部,self就表示当前调用方法的对象自己
调用方法时,程序员不需要传递self参数(但是定义时,第一个参数必须是self)
在方法内部:可以通过self.访问对象的属性
在方法内部:可以通过self.调用其他的对象和方法

  • 内置方法:
    del方法:对象被从内存中销毁前,会自动调用
    str方法:返回对象的描述信息 print 对象
    del方法:当一个对象被从内存中销毁前(把这个对象从内存中删除掉),会自动调用del方法
    应用场景
    del如果希望在对象被销毁前,再做一些事情,可以考虑以下调用del方法
    str方法:再python中,使用python输出对象变量,默认情况下,会输出这个变量引用是由哪一个类创建的对象,以及在内存中的地址(16进制表示)
    如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用str这个内置方法了。
    自动调用del方法

    主动调用del方法

生命周期:一个对象从调用类名()创建,声名周期开始。一个对象的del方法一旦被调用,生命周期就算结束

私有属性和私有方法
应用场景及定义方式
应用场景: 在实际开发中,对象的某些属性或者方法可能只希望在对象的内部使用,而不希望在外部被访问到。
私有属性就是对象不希望被公开的对象
私有方法就是不希望公开的方法
定义方法
在定义属性或者方法时,在属性名前增加两个下划线,定义的就是私有属性或方法。


封装 继承和多态
1、封装是面向对象编程的一大特点
2、面向对象编程的第一步,将属性和方法封装到一个抽象的类中,因为类不能直接使用
3、外界使用类创建对象,然后让对象调用方法
4、对象方法的细节都被封装在类的内部

案例1:
小明喜欢跑步
体重75公斤
每次跑步会减肥0.5公斤
每次吃东西会增加1公斤
小美的体重是45公斤


案例2:
需求:摆放家具
1.房子有户型,总面积和家具名称列表
新房子没有任何的家具
2.家具有名字和占地面积,其中
床:占4平米
衣柜:占2平面
餐桌:占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
被使用的类应该先开发


注意return的使用


将return注释掉之后得到的结果

案例3
需求:
1.士兵瑞恩有一把AK47
2.士兵可以开火(士兵开火扣动的是扳机)
3.枪 能够 发射子弹(把子弹发射出去)
4.枪 能够 装填子弹 --增加子弹的数量




**面向对象的三大特征

  • 封装:根据职责将属性和方法封装到一个抽象的类中
  • 继承: 实现代码的重用,相同的代码不需要重复的写
  • 多态
    单继承:子类拥有父类的所有属性和方法
    继承的语法
    class 类名(父类):
    def 子类特有的方法

继承的传递性:(爷爷,父亲,儿子)
c 类从b类继承,b类从a类继承
那么c类就拥有a类和b类的所有属性和方法
子类拥有父类以及父类的父类中封装的所有属性和方法
Cat类是Animal类的子类,Animal类是Cat类的父类,Cat从Animal类继承
Cat类是Animal类的派生类,Animal类是Cat类的基类,Cat类从Animal类派生

重写父类方法
1- 覆盖父类的方法
2- 扩展父类的方法





初始化方法也是方法

多继承的特殊情况

私有属性和私有方法
1.子类对象不能在自己的方法内部,直接访问父类的私有属性和私有方法
2.子类对象可以通过父类的公有方法间接访问到私有属性或私有方法
私有属性,私有方法是对象的隐私,不对外公开,外界以及子类都不能直接访问
私有属性,私有方法常用做一些内部的事情


子类访问父类的私有属性和方法

新式类和旧式(经典)类:
object是Python为所有对象提供的基类,提供有一些内置的属性和方法,可以使用dir函数查看
新式类:以object为基类的类,推荐使用
经典类:不以object为基类的类,不推荐使用
在python3.X中定义的类时,如果没有指定父类,会默认使用object作为基类--python3.x中定义的类都是新式类
在python2.x中定义类时,如果没有指定父类,则不会以object作为基类
推荐使用新式类
新式类和旧式类在多继承时---会影响到方法的搜索顺序
为保证编写的代码能够同时在python2.x和python3.x运行
今后在定义类时,如果没有父类,建议统一继承自object

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容