python中的三大特点:封装 继承 多态

python中的三大特点:封装 继承 多态面向对象的三大特点 封装 将有一定功能的代码封装起来 使用时调用即可继承 将公共的属性和方法放在父类中 自己自考虑特有的属性和方法 多态 程序运行过程中 根据执行条件的不同 动态执行不同的操作代码的过程称为运行时多态 一封装 1 封装是面向对象编程的一大特点 2 面向对象编程的第一步 将属性和方法封装到一个抽象的类中 3 外界使用类创建对象 然后让对象调用方法 4

面向对象的三大特点:

封装:将有一定功能的代码封装起来,使用时调用即可 继承:将公共的属性和方法放在父类中,自己自考虑特有的属性和方法。 多态:程序运行过程中,根据执行条件的不同,动态执行不同的操作代码的过程称为运行时多态。 

一 封装

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

封装的示例

class Person: def __init__(self, name, weight): # 在初始化方法中增加两个参数由外界传递 # self.属性 = 形参 self.name = name self.weight = weight def __str__(self): return '我的名字叫 %s 体重是 %.2f' % (self.name, self.weight) def run(self): # pass print '%s 爱跑步' % self.name # 在对象方法的内部,是可以直接访问对象的属性 self.weight -= 0.5 def eat(self): #pass print '%s 吃东西' % self.name self.weight += 1 xiaoming = Person('小明',75.5) xiaoming.run() xiaoming.eat() print xiaoming xiaomei = Person('小美',45.0) xiaomei.eat() xiaomei.run() # 同一个类创建的多个对象之间,属性互补干扰 print xiaomei print xiaoming

这里写图片描述

一个对象的属性可以是另外一个类创建的对象

示例需求

1.士兵瑞恩有一把AK47 2.士兵可以开火(士兵开火扣动的是扳机) 3.枪 能够 发射子弹(把子弹发射出去) 4.枪 能够 装填子弹 --增加子弹的数量 Soldier Gun --------- ------------ name model gun bullet_count ---------- ------------- __init__(self) __init__(self) fire(self) add_bullet(self,count) shoot(self)
class Gun: def __init__(self, model): # 枪的型号 self.model = model # 子弹的数量 self.bullet_count = 0 def add_bullet(self,count): self.bullet_count += count # 只要子弹的数量足够,就能发射,所有shoot方法不需要传递参数 def shoot(self): # 1.判断子弹的数量 if self.bullet_count <= 0: print '[%s] 没有子弹了...' %self.model return # 2.发射子弹,子弹数量-1 self.bullet_count -= 1 # 3.提示发射信息 print '[%s] 突突突...[%d]' %(self.model,self.bullet_count) class Soldier: def __init__(self,name): self.name = name # 定义属性的时候,如果不知道设置什么初始值,可以设置为None # None关键字表示什么都没有,表示一个空对象,没有方法和属性 # 是一个特殊的常量,可以将None赋值给任何一个变量 self.gun = None def fire(self): # 1.判断士兵是否有枪 if self.gun == None: print '[%s] 还没有枪...' %self.name return print 'go!!! [%s]' %self.name self.gun.add_bullet(50) self.gun.shoot() # 1.创建枪对象 ak = Gun('AK47') # 2.创建瑞恩 # 枪不能自己发射子弹,枪不能自己开火 需要士兵去完成 ryan = Soldier('Ryan') ryan.gun = ak ryan.fire()

这里写图片描述

二 继承

继承:实现代码的重用,相同的代码不需要重复的写

1 单继承

1.继承的概念:子类拥有父类的所有属性和方法(子类只需要封装自己特有的方法) 2.语法 class 类名(父类): def 子类特有的方法

示例:

class Student: #定义父类 def study(self): print '学生要学习' def practice(self): print '学完要练习' def play(self): print '练习完要玩耍' def sleep(self): print '玩耍后睡觉觉' class homie(Student): # 子类拥有父类的所有属性和方法 def call(self): print '开黑' Bob = homie() Bob.study() Bob.practice() Bob.play() Bob.sleep() Bob.call() # 子类继承自父类,可以直接享受父类中已经封装好的方法

这里写图片描述
2 继承的传递性

class Student: def study(self): print '学生要学习' def practice(self): print '学完要练习' def play(self): print '练习完要玩耍' def sleep(self): print '玩耍后睡觉觉' class homie(Student): # 子类拥有父类的所有属性和方法 def call(self): print '开黑' class homie1(homie): # 继承的传递性 子类拥有父类的父类的属性和方法 def LOL(self): print '三人开黑' james =homie1() james.study() james.practice() james.play() james.sleep() james.call() james.LOL() 

这里写图片描述
3 重写父类和扩展

class Student: def study(self): print '学生要学习' def practice(self): print '学完要练习' def play(self): print '练习完要玩耍' def sleep(self): print '玩耍后睡觉觉' class Homie(Student): # 子类拥有父类的所有属性和方法 def call(self): print '开黑' class Homie1(Homie): def LOL(self): print '三人开黑' def call(self): # 1.针对子类特有的需求,编写代码 print '我的homie一起在一起' # 2.调用原本父类中封装的方法 Homie.call(self) #重写之后并没有改变父类的方法 # 3.增加其他子类代码 print '我们需要五黑' #对父类方法进行扩展 james =Homie1() james.call() james.LOL() 

这里写图片描述
4 多继承

class A: def test(self): print 'A----------test方法' def demo(self): print 'A----demo 方法' class B: def test(self): print 'B----------test方法' def demo(self): print 'B----demo 方法' class C(B,A): #谁在前面调用谁,当然也可以指定调用父类的方法 """多继承可以让子类对象,同时具有多个父类的属性和方法""" pass # 创建子类对象 c = C() c.test() c.demo()

这里写图片描述

三 多态

class Dog(object): def __init__(self,name): self.name=name def game(self): print '%s喜欢耍'%self.name class Goddog(Dog): def game(self): print '%s喜欢hotdog'%self.name # Dog.game(self) class Person(object): def __init__(self,name): self.name=name def game_with_dog(self,dog): print '%s和%s一起耍'%(self.name,dog.name) Hotdog=Goddog('Hotdog') zhangzhenyue=Person('张震岳') zhangzhenyue.game_with_dog(Hotdog)

这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218120.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:00
下一篇 2026年3月18日 上午8:00


相关推荐

  • 我的世界java1.16.3村庄种子,我的世界2020年最新版村庄种子

    我的世界java1.16.3村庄种子,我的世界2020年最新版村庄种子我的世界 2020 最新版 玩家在虚拟全新的沙盒世界中探索 快来经营自己的村庄吧 玩家将感受不同的像素画质 充满活力的冒险挑战来临 展现出全新的趣味设计 选择顶尖的探索玩法类体验 打造全球丰富的创造环境 培养更多的主角来冒险 在自由沙盘的村庄地形中探索 我的世界 2020 最新版特色 1 守护全新的沙盒世界 在华丽自由的村庄环境中探索 感受不同的华丽特效吧 2 抓捕更多的动物来守护你的花园 打造世界第一的

    2026年3月18日
    2
  • 计算机组成原理核心知识点总结&面试笔试要点[通俗易懂]

    作为一名计算机专业的学生,计算机组成原理、计算机网络、操作系统这三门课程可以说是专业核心基础课,是至关重要的,其内容是一名合格的coder所必备的知识集;非科班出身的程序员要是想要有所提升,也需要认真学习这三门课程,可以快速形成计算机知识的结构体系,理解计算机底层原理,在工作实践中可以借鉴优秀的设计;而且很多互联网公司在笔试和面试中都会涉及到这三门课程的知识点,因此我通过视频学习对这三门课程就行…

    2022年4月12日
    69
  • python 获取时间戳_python十个实例

    python 获取时间戳_python十个实例1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳importtimeimportdatetimet=time.time()print(t)#原始时间数据print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级时间戳print(int(round(t*1000000)))#微秒级时间戳返回1…

    2022年10月2日
    7
  • 拉姆达表达式学习(1)

    拉姆达表达式学习(1)我曾经遇到一个项目,项目里面需要经常对一系列的同类型集合进行操作,如对集合进行增加元素,删除集合的指定索引的元素等等.  我们可以使用ArrayList来进行.如1ArrayListstringList=newArrayList();2stringList.Add(“大家好”);3stringList.Add(“你们好”);4stringList.Add(“同志们…

    2026年1月21日
    5
  • pycharm的运行环境_pycharm新环境怎么选

    pycharm的运行环境_pycharm新环境怎么选一直用pycharm写代码一直用anaconda管理python环境但是今天我居然发现我不会更改pycharm当前的运行环境到我新建的anacondaenvironment中!配置:系统:win10;GPU:NVIDIAGeForceGTX1050Ti管理平台:anaconda3IDE:Pycharm问题我的anaconda里面有三个环境,第一个是自…

    2022年8月26日
    7
  • 一张色环图教你搞定配色_24色环颜色调配图

    一张色环图教你搞定配色_24色环颜色调配图一张色环图教你搞定配色!不管是在平面设计或网页制作中,还是在平常生活中的衣服穿搭和室内装潢中,要想打造出非凡的视觉效果,合理的颜色搭配非常重要。下面介绍几种色彩搭配方案供您参考,让你轻易地一靶中的

    2022年8月1日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号