2018-09-10 day16-类的补充

1.多继承

python中的类支持多继承,但不建议使用
多继承继承时,子类可以拥有所有父类的所有方法和类的字段,但只能继承第一个父类的对象属性

2.多态:有多种形态

有继承就有多态:不同类继承自同一个类,其实就是对这个共同的父类的不同的形态
继承后对方法的重写也是多态的表现

3.封装,继承,多态

封装:一个类可以通过不同的方法对不同的功能进行封装
通过属性对不同的数据进行封装
继承:通过继承让子类拥有父类的属性和方法

4.包

将多个模块封装到一起,就是包
包就是有一个默认文件init.py的文件夹
a.import 包.模块

b.from 包 import 模块

c.from 包.模块 import 方法/变量/类

5.raise 错误类型

raise 可以让程序主动崩溃,一般用于调试
raise: 关键字
错误类型:必须是一个类,并且这个类是exception的子类

# =============抛出异常==============
class YTError(Exception):
    name = ''
    # 通过str魔法方法来设置错误提示信息
    # __str__的本质,就是定义类和对象的打印的内容
    def __str__(self):
        return '错误!%s'%YTError.name

num = 11
if num%2:
    YTError.name = '奇数错误!'
else:
    YTError.name = '偶数错误!'

# raise YTError


# =================多继承==================
class Aniaml(object):
    def __init__(self,age=0,name='小动物'):
        self.age = age
        self.name = name

    def eat(self):
        print('%s在吃东西'%self.name)

class Fly:
    def __init__(self,height=0):
        self.max_height = height
    def fly(self):
        # print('最大能飞%d米'%self.max_height)
        print('飞起来')

# 让Bird同时继承Animal类和Fly类
class Bird(Fly, Aniaml):
    def eat(self):
        print('在吃虫子')
    pass


if __name__ == '__main__':
    bird1 = Bird()
    # print(bird1.name, bird1.age)
    print(bird1.max_height)
    bird1.eat()
    bird1.fly()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,591评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,138评论 1 32
  • 翻飞着空中的斑驳, 一点,一点,一点, 柳絮皴裂般 飘啊,飘啊,飘啊, 到了地上,桥上,树上, 积起薄薄数层, 化...
    听风说你哭了阅读 204评论 5 3
  • 最近准备阅读JVM源码,打算在本机编译一个Debug版本的JDK,鉴于工作中主要使用JDK7,因此选择OpenJd...
    allanYan阅读 1,465评论 3 0
  • 背景 需要将项目中的线程池统一管理,并且提供统一的监控。不至于等到程序崩溃的时候才发现。 思路 1、所有的线程池统...
    窝牛狂奔阅读 5,805评论 2 18