python2筑基-(封装/继承/多态/类属性)
继承
- 单继承
""""""
"""
在对象中,有种关系叫做父子关系
继承--子类拥有父类中定义的属性,函数语法:
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筑基-(封装/继承/多态/类属性)相关推荐
- python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态
六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...
- 面向对象 编程及面向对象三大属性:封装 继承 多态
面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...
- python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...
- Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态
Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...
- python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...
- c语言编程 菲薄拉,C语言设计模式-封装-继承-多态
快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...
- 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)
面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...
- 小白理解——封装继承多态
一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...
- Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态
Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...
最新文章
- js控制表格隔行变色
- Nature撤稿!为销毁造假证据丢弃电脑,“划时代”成果翻车了,副校长鞠躬道歉...
- 积木赛尔号机器人_精灵伙伴帮你打怪?我的世界x赛尔号联动即将开启!
- 计算机电路基础学什么,"计算机电路基础"学习辅导.doc
- java学习记录【day12】
- how is Bean object created
- thinkphp删除某一学生_基于ThinkPHP实现批量删除
- Git检出远程库的分支等相关操作
- [转]测试的三重境界
- cocos2d-x学习笔记10:动作3:补间动作
- python requests 上传文件
- SPSS说明附学习方法
- Linux(入门基础):85---Linux单一计划任务(at服务、at、atq、atrm、batch命令)
- activity 所需jiar包
- 计算机地图制图算法与原理重点,计算机地图制图原理概述.ppt
- oracle exp导出表where,oracle EXP导出一张表时使用query参数指定where条件
- Ubuntu18.04安装Petalinux 2021.1
- 从此我该怎么过 很感人的Flash歌曲
- python 类继承list,为什么继承 Python 内置类型会出问题?!
- 一.webView 的介绍和用途
热门文章
- 【自动微分原理】01. 自动微分的原理介绍
- 无法爬取淘宝商品页面
- 【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
- 知识付费短视频小程序教育直播APP定制开发
- E. Marbles
- SPOJ 78 Marbles 组合数学
- Karl Hessenberg:德国数学家的传奇一生
- 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的
- 毛概期末考试要点总结
- 我的世界 命令方块大炮