本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-07(4)

2020-08(27)

Python学习之旅(核心编程基础篇013面向对象三)

发布于2021-01-29 11:01     阅读(636)     评论(0)     点赞(2)     收藏(0)



Python学习之旅2021.01.24

指导教师:逻辑教育讲师Amy

一、多继承

多继承遵循C3算法,通过print(子类.__mro__)可查看顺序

  • 情景1:遵循左边优先原则
    在这里插入图片描述
  • 情景2:左边运行到根
    在这里插入图片描述
  • 情景3:左边优先,根最后执行
    在这里插入图片描述

二、多态

  • 定义时和运行时的类型不一样,此时就成为多态
    在这里插入图片描述

三、魔法方法

  • 介绍:Python中一些内置的特定方法,在进行特定操作时会自动被调用,这些方法称为魔法方法。命名时用双下划线包裹,如__名字__
  • 常用魔法方法
    • 1、__doc__:用来查看类的说明文档
      在这里插入图片描述
    • 2、__dict__用来获取类或实例属性的字典
      在这里插入图片描述
    • 3、__del__析构方法(Python中解释器自带垃圾回收机制,此方法不需要主动封装),当由类创建的实例对象,被删除或在内存中被释放,将自动执行
      • 当代吗全部执行完毕自动触发
        在这里插入图片描述
      • 需要提前触发时,通过del关键字,删除所有对象后触发
        在这里插入图片描述
  • 4、__call__将一个对象变成可调用的对象(类中存在该方法时,其实例化得到的对象可直接被调用)
    在这里插入图片描述
  • 5、__new__用于创建和返回一个对象。类准备自身实例化时调用
    • 对象创建执行顺序,通过__new__方法创建对象,并将对象返回传给__init__
    • __init____new__的区别:__init__为实例方法,__new__为静态方法;__init__创建对象后调用,__new__用来创建对象
      在这里插入图片描述

四、单例模式

一种常用软件设计模式。如果希望系统中某个类等的对象只能是一个时,可以使用单例模式。单例模式方便系统对实例个数控制并节约系统资源。

  • 单例模式实现:当对象不存在时创建对象,当对象存在时永远只返回当前对象
    在这里插入图片描述

五、作业

  • 作业一
    在这里插入图片描述
class GunAk47(object):  # 枪类
    def __init__(self):
        self.model = 'AK47'  # 默认型号
        self.bullet_num = 30  # 默认弹药数量

    def shoot(self):  # 连续发射子弹
        while self.bullet_num > 0:
            self.bullet_num -= 1
            print('da', end='')
        print()  # 换行
        print('弹药不足')  # 提示

    def loading(self):  # 装弹
        self.bullet_num = 30
        print('换夹成功!')


class SoldierS(object):  # 士兵类
    def __init__(self, soldier_name, gun_name):
        self.soldier_name = soldier_name
        self.gun_name = gun_name

    def fire(self):  # 士兵开火方法类
        if self.gun_name == 'Ak47':  # 判断是否持枪
            gun = GunAk47()  # 枪类实例化
            gun.shoot()
            if gun.bullet_num == 0:
                gun.loading()


Amy = SoldierS('Amy', 'Ak47')
Amy.fire()  # 士兵开火

运行结果
在这里插入图片描述

  • 作业二
    在这里插入图片描述
class CarOne(object):
    def __init__(self, color, weight, velocity=0, wheel=4):
        self.color = color
        self.wheel = wheel
        self.weight = weight
        self.velocity = velocity

    def speed_up(self):
        pass

    def speed_down(self):
        pass

    def parking(self):
        self.velocity = 0


class CarTwo(CarOne):
    def __init__(self, model, color, weight, velocity=0, wheel=4):
        self.model = model
        super().__init__(color, weight, velocity=0, wheel=4)  # 调用父类方法

    def speed_down(self):
        self.velocity += 1

    def speed_up(self):
        self.velocity -= 1

    def __str__(self):
        return f'车辆型号:{self.model}\n颜色:{self.color}\n重量:{self.weight}'


car = CarTwo('AE86', '白色', '925kg')
print(car)

运行结果
在这里插入图片描述

原文链接:https://blog.csdn.net/qq_36195536/article/details/113069670






所属网站分类: 技术文章 > 博客

作者:小鬼来了

链接:https://www.pythonheidong.com/blog/article/803390/bdd36a16ca43cd34e199/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)