继承

  • 单继承
""""""
"""
在对象中,有种关系叫做父子关系
继承--子类拥有父类中定义的属性,函数语法:
class 类名(父类的名字)父类的属性父类的所有方法子类也可以写上自己对应的属性:子类可以自定义属性子类可以定义自己需要的函数,如果与父类同名,这就叫函数的覆盖,相当于子类 重写了父类的方法"""
#动物类 -- 猫 狗
#动物类属性 父类--type_name 吃 睡
#狗--汪汪汪
#猫--喵喵class Animal():type_name="动物"# __num=1 不能用def eat(self):print("动物能吃")def sleep(self):print("动物能睡觉")class Dog(Animal):def shout(self):print("汪汪汪")xioabai= Dog()
print(xioabai.type_name)
xioabai.shout()
  • 多继承
""""""
"""
语法:
class 类名(父类1 父类2):
多继承,剩下的的和单继承没区别,但是可以多几个父类
"""
# 孙悟空  神仙(会飞) 猴子(吃香蕉)
# 神仙类 飞
# 猴子类 吃香蕉
# 孙悟空 西天取经class Monkey():def eat(self):print("猴子爱吃香蕉")class Shenxian():def fei(self):print("神仙会飞")def eat(self):print("神仙会吃")#当父类有两个相同名称的方法时, 看SunWuKong(Monkey,Shenxian):  中谁先传入 (Monkey,是第一传入的所有取的是猴子爱吃香蕉)就取谁的方法
class SunWuKong(Monkey,Shenxian): #就近原则def  qujing(self):print("西天取经")wk=SunWuKong()
wk.eat()
wk.fei()
wk.qujing()
  • 继承的传递性
""""""
"""
A-B-C 继承可以传递 c 可同时继承a b 的属性和方法
孙子辈,不仅仅有父亲的所有函数和方法
也会有爷爷的所有函数,属性和方法
"""
#动物类 -- 猫 狗
#动物类属性 父类--type_name 吃 睡
#狗--汪汪汪
#猫--喵喵
#HolleKitty--能说话
class Animal():type_name="动物"# __num=1 不能用def eat(self):print("动物能吃")def sleep(self):print("动物能睡觉")
class Cat(Animal):def shout(self):print("喵喵喵")class HelloKitty(Cat):def speak(self):print("你好,我是可爱的猫咪")hk=HelloKitty()
hk.speak()
hk.shout()
hk.eat()
hk.sleep()
  • 父类的覆盖与重写
""""""
"""
父类的重写,一旦再子类存在同名函数,那么执行的时候
调用的一定是子类函数
这种行为叫做重写
"""
#动物类 -- 猫 狗
#动物类属性 父类--type_name 吃 睡
#狗--汪汪汪
#猫--喵喵class Animal():type_name="动物"# __num=1 不能用def eat(self):print("动物能吃")def sleep(self):print("动物能睡觉")class Panda(Animal):def eat(self):print("熊猫吃竹子")
bingdundun=Panda()
bingdundun.sleep()
bingdundun.eat()

封装

  • 函数的封装
""""""
""""""
#需求:
# 1、聊聊体重75公斤  2、每次跑步减肥0.5公斤 3、每次吃东西 长胖1公斤
#2、倩倩 体重 45公斤 2、每次跑步减肥0.8公斤 3、每次吃东西长0.3公斤class Person():def __init__(self,name,weight,num,add):self.name=nameself.weight=weightself.num=numself.add=adddef jianfei(self):self.weight-=self.numprint("{}跑步后,体重为{}".format(self.name,self.weight))def eat(self):self.weight-=self.numprint("{}跑步后,体重为{}".format(self.name,self.weight))
changfei=Person("长丰",75,0.5,1)
xiaomei=Person("小妹",45,0.8,0.3)
changfei.jianfei()
xiaomei.eat()"""
在面向对象中,我们可以定义一个公式,或者说定义一段同样的逻辑,
交给不同的数据进行使用,这个叫封装
"""

多态

  • 多态
""""""
"""
为不同的数据类型,提高一个统一的接口
计算机程序 运行的时候 相同内容 送给不同的类
根据你的对象区别,引发不同的应为
"""
class PayMent():def pay(self):print("给钱")class Wechat(PayMent):def pay(self):print("微信支付")class Ali(PayMent):def pay(self):print("支付宝支付")class Card(PayMent):def pay(self):print("信用卡支付")
class StarPay():def pay(self,obj):obj.pay()p=Wechat
ali=Ali()
s=StarPay()
s.pay(ali)# 根据不同的对象,进行不同的操作,多态

类属性

  • 内置属性
""""""
"""
类名.__doc__:类文档(如果有,自己定义的)
类名.__dict__:类的属性
类名.__name__ 类名
类名.__module__ 模块
类名.__bases__ 所有父类
"""
class Person():def __init__(self,name,age,sex,job):self.sname=nameself.age=ageself.__sex=sexself.__job=jobdef eat(self):print("{}爱吃饭".format(self.sname))  #Person.sname 也是一样的def work(self):print("职业是{}".format(self.__job))
print(Person.__doc__)
print(Person.__dict__)
print(Person.__bases__)
print(Person.__module__)"""
类——(某个业务,可能需要多个类协同完成)
类A 复制干xxx事情 类b 复制干xxx事情
类A 中,我应该定义什么属性 什么函数
1、我们是上帝,我需要某段代码来帮助我们完成任务,我来创建
2、实例化,进行调用
3、属性 类属性喝实例属性 来让这个类有逻辑
4、函数
面向对象——封装 多态 继承
"""
  • 实例属性的定义和调用
""""""
"""
定义一个类的过程中,我没有对它定义任何属性,而是留在实例中的定义?
实例:(instance):
类——模块——构造出来的具体的实例对象
Person -- 小明
类名()--得到的就是一个instance实例属性:(__int__)传入
公有,私有
"""
class Person():def __init__(self,name,age,sex,job):self.sname=nameself.age=ageself.__sex=sexself.__job=jobdef eat(self):print("{}爱吃饭".format(self.sname))  #Person.sname 也是一样的def work(self):print("职业是{}".format(self.__job))liaoliao = Person(name="廖廖",age=18,sex="女",job="测试")
liaoliao.eat()
liaoliao.work()
print(liaoliao.sname)
  • 类属性的定义和调用
""""""
"""
类属性:定义在类中的变量,我们统称类属性(不在函数中)
公有类属性:常规变量的定义
私有类属性:用两个下划线开头的,只能在类使用在外面获取到对应的公有类属性——实例名.属性名 就能获取
在外面获取到对应的私有类属性——需要类开出获取属性的函数
在类里面,直接通过类名.属性名获取
"""
class Person():type="人类"num=0__phone=134524345def eat(self):print("爱美是天性")print(Person.num)print(Person.__phone)#例如我可以对私有属性进行设置值def setShuxing(self,phone):self.__phone=phone#通过get获取属性def getShuxing(self):return self.__phonep=Person()
print(p.type)
print(p.num)
print(p.getShuxing())  #不能直接写成p.__Phone  因为我们设置的电话是私有属性 需要通过get来获取(类开出获取属性的函数)
#还可以直接设置电话后再获取
print("-----------------")
p.setShuxing(1111000)
print(p.getShuxing())
p.eat()

python2筑基-(封装/继承/多态/类属性)相关推荐

  1. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  2. 面向对象 编程及面向对象三大属性:封装 继承 多态

    面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...

  3. python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

    编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...

  4. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  5. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  6. c语言编程 菲薄拉,C语言设计模式-封装-继承-多态

    快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...

  7. 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)

    面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...

  8. 小白理解——封装继承多态

                                      一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...

  9. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

最新文章

  1. js控制表格隔行变色
  2. Nature撤稿!为销毁造假证据丢弃电脑,“划时代”成果翻车了,副校长鞠躬道歉...
  3. 积木赛尔号机器人_精灵伙伴帮你打怪?我的世界x赛尔号联动即将开启!
  4. 计算机电路基础学什么,"计算机电路基础"学习辅导.doc
  5. java学习记录【day12】
  6. how is Bean object created
  7. thinkphp删除某一学生_基于ThinkPHP实现批量删除
  8. Git检出远程库的分支等相关操作
  9. [转]测试的三重境界
  10. cocos2d-x学习笔记10:动作3:补间动作
  11. python requests 上传文件
  12. SPSS说明附学习方法
  13. Linux(入门基础):85---Linux单一计划任务(at服务、at、atq、atrm、batch命令)
  14. activity 所需jiar包
  15. 计算机地图制图算法与原理重点,计算机地图制图原理概述.ppt
  16. oracle exp导出表where,oracle EXP导出一张表时使用query参数指定where条件
  17. Ubuntu18.04安装Petalinux 2021.1
  18. 从此我该怎么过 很感人的Flash歌曲
  19. python 类继承list,为什么继承 Python 内置类型会出问题?!
  20. 一.webView 的介绍和用途

热门文章

  1. 【自动微分原理】01. 自动微分的原理介绍
  2. 无法爬取淘宝商品页面
  3. 【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
  4. 知识付费短视频小程序教育直播APP定制开发
  5. E. Marbles
  6. SPOJ 78 Marbles 组合数学
  7. Karl Hessenberg:德国数学家的传奇一生
  8. 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的
  9. 毛概期末考试要点总结
  10. 我的世界 命令方块大炮