随笔分类 - Python--面向对象
摘要:一、封装数据属性、明确区分内外:示例代码如下: 可以防止外部直接修改隐藏属性,并且提供了一个接口,按照固定的格式向调用者输出信息 也可以提供修改隐藏属性的接口,让调用者通过接口修改隐藏的属性,并且可以写上控制逻辑 例如: 可以看出,修改成功了,并且加上了控制,不让调用者随意更改 二、隔离复杂度 例如
阅读全文
摘要:一、引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八等一起装进麻袋,然后把麻袋封上口子。 照这种逻辑看,封装=‘隐藏’,这种理解是相当片面的 二、如何实现属性的隐藏 1、在python中用双下划线开头的方式将属性隐藏起来,示例代码如下: 不仅类A无法访问,A的实例化对象也
阅读全文
摘要:Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’ python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象 也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。 例如:利用标准库中
阅读全文
摘要:一、什么是多态 多态是同一类事物的多种形态 例如: 二、什么是多态性 多态性指的是可以在不考虑对象类型的情况下而直接使用对象 例如: 三、多态性的好处 1.增加了程序的灵活性 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal) 2.增加了程序额可扩展性 通过继承a
阅读全文
摘要:一、什么是抽象类 与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 二、抽象类与普通类的不同 抽象类中只能有抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。 三、在python中利用a
阅读全文
摘要:先看一段代码: 如果要为,teacher类添加老师所教的课程信息,如课程名,课程价格,课程周期等,可以在init函数里面增加,但是如果多个老师教同一门课程,就会出现代码重复的问题,如下 代码所示: 怎样解决代码重复问题,可以新加一个course类:如下所示: 但是,course类和teacher类并
阅读全文
摘要:一、指名道姓的方式,不依赖于继承 示例代码如下: 从以上结果可以看出,即执行了自己的特有方法,又执行了父类中继承的方法 想为草丛伦增加一个weapon私有属性,代码如下: 报错提示缺少一个weapon位置参数,加上位置参数就可以实例化成功了, 但是发现了重复代码,怎样减少重复代码呢,可以使用 二、s
阅读全文
摘要:一、面向对象中的类有两种,新式类和经典类 1、在python2中,经典类是没有继承object的类,以及它的之类都称之为经典类 示例代码如下 class Foo: pass class Bar(Foo): pass 2、在python2中,新式类是继承object的类,以及它的子类都称之为新式类 示
阅读全文
摘要:派生是指子类可以有自己的特有属性,示例代码如下: 结果为: Demacia 从结果可以看出,能够访问g1的特有属性camp 派生属性并不影响正常代码执行: 在Garen类中添加一个attack函数,会发生什么变化 以上结果说明,属性的查找顺序为对象自身,所属类中依次去查找
阅读全文
摘要:属性查找小练习: 稍作修改: 可以看出,属性的查找顺序为先从对象自身查找,然后从对象所在的类进行查找,然后从父类查找,依次查找,直至找到或者报错没有找到,
阅读全文
摘要:一、什么是继承 继承指的是类与类之间的关系,是一种子类是父类的关系,例如,人,大象,猴子是动物的关系,继承的功能之一就是用来解决代码重用问题,继承是一种创建新类的方式, 在python中,新建的类一个或多个父类,父类又可以称为基类或者超类,新建的类称为派生或者子类。 二、Python中的继承分为:单
阅读全文
摘要:需求: 英雄需要有昵称、攻击力、生命值等属性; 实例化出两个英雄对象; 英雄之间可以互殴,被殴打的一方掉血,血量小于0则判定为死亡。 实例代码如下: 草丛伦打芮雯雯,草丛伦的攻击力为30 ,打了芮雯雯一下,芮雯雯掉了30的血,还剩50的生命值
阅读全文
摘要:需求:有一个计数器(属性),统计总共实例化了多少个对象 代码如下: 结果为: 0111 从以上结果可以看出,如果写成self.count ,他就会变成对象的私有属性,所以说虽然实例化了3次,但是类的count值为0,每个对象的count值为1 从以下验证代码可以看出: 所以说正确的代码实例如下:
阅读全文
摘要:小结主要讲述面向对象的优点,可扩展性高 示例代码如下: 我们往类中插入一个数据属性,只需在类中添加即可,对象不需做什么改动就可以访问,代码验证如下: 结果如下: ChinaChinaChina 证明都可以访问 插入一个函数属性,只需在类中添加即可,对象不需做什么改动就可以访问,代码验证如下: 结果如
阅读全文
摘要:补充说明: 1、站的角度不同,定义出的类是不同的 2、现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等 3、有时为了编程需求,程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中确实一个很常见的类 在python中一切皆对象,在py
阅读全文
摘要:一、说明 __init__方法用来为对象定制自己独有的特征 二、示例代码如下 产生对象代码如下: 加上__init__方法后,类示例化的步骤如下: 1、先产生一个空对象,stu1 2、LuffyStudent.__init__(stu1,'王一丫','女',18) 查看stu1的名称空间: 结果如下
阅读全文
摘要:一、面向对象的理解 面向对象的核心就是对象二字,什么是对象呢,对象就是特征与技能的结合体,例如,花、草、树木是对象、电脑和人也是对象,他们都有自己的特征和技能 二、面向对象的优点: 面向对象的优点正是面向过程的缺点,面向过程可扩展性差,但是面向对象可扩展性强 三、面向对象的缺点 面向对象的缺点正是面
阅读全文
摘要:面向过程编程是Python两种编程流派的其中一种,另外一种是面向对象编程,这篇博客只讨论面向过程编程: 1、概念 面向过程的核心是过程二字,过程就是解决问题的步骤,他就像是设计工厂的一条流水线,是一种机械式的思维方式 2、优点 复杂的问题流程化,简单化 3、编程实例 用户注册: 过程分解,编程简单,
阅读全文

浙公网安备 33010602011771号