IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python2筑基-(封装/继承/多态/类属性) -> 正文阅读

[Python知识库]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=name
        self.weight=weight
        self.num=num
        self.add=add

    def jianfei(self):
        self.weight-=self.num
        print("{}跑步后,体重为{}".format(self.name,self.weight))
    def eat(self):
        self.weight-=self.num
        print("{}跑步后,体重为{}".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=name
        self.age=age
        self.__sex=sex
        self.__job=job

    def 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=name
        self.age=age
        self.__sex=sex
        self.__job=job

    def 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=134524345

    def eat(self):
        print("爱美是天性")
        print(Person.num)
        print(Person.__phone)

   #例如我可以对私有属性进行设置值
    def setShuxing(self,phone):
        self.__phone=phone
    #通过get获取属性
    def getShuxing(self):
        return self.__phone

p=Person()
print(p.type)
print(p.num)
print(p.getShuxing())  #不能直接写成p.__Phone  因为我们设置的电话是私有属性 需要通过get来获取(类开出获取属性的函数)
#还可以直接设置电话后再获取
print("-----------------")
p.setShuxing(1111000)
print(p.getShuxing())
p.eat()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:28:05  更:2022-03-15 22:31:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:03:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码