多继承,运算符重载,内存管理,pygame最小系统

2018-12-08  本文已影响0人  222AblackA

一.多继承(很多语言都删除了多继承功能)

1.多继承:让一个类同时继承多个类,类的方法和字段都能继承,但是对象属性只能继承第一个类的对象属性(实际开发一般不用)

    class Animal:
        num=0
        def __init__(self,name='名字',age=12,color='红毛怪'):
            self.name = name
            self.age = age
            self.color = color
        def show_info(self):
            print('我是show')
    class Fly:
        num1=9
        def __init__(self,distance=0,speed=0):
            self.distance = distance
            self.speed = speed
        @staticmethod
        def show():
            print('飞飞飞飞')
    class Birds(Animal,Fly):
        pass

2.类的特点:继承,封装,多态

    类的封装:可以对多个数据(属性)或者功能(方法)进行封装
    类的继承:让一个类拥有父类的属性和方法
    类的多态:有继承就有多态(一个类的多种子类)

二.运算符重载:python中的函数不支持重载 ,多个相同函数名的函数,最后一个会覆盖其他函数

1.运算符重载:在不同类中实现同一个运算符对象的魔法方法,来让类的方法支持相应的运算

 a.python中使用运算的时候,实质是在电泳相应的魔法方法
 b.python中每一个运算符都对应一个魔法方法
 c.比较运算符中,大于和小于符号,一般只需要重载一个就可以了,另外一个符会自动重载

三.内存管理

1.内存区域:堆区间和栈区间

    堆区间内存开辟和释放:手动开辟手动释放  栈区间内存是系统自动开辟释放
    内存管理的是堆区间的内存(python已经封装了相应的内存开辟管理方法)

2.数据的存储

    a.python中所有的数据都是对象,保存在堆区间里面
    b.python中所有的变量存储的都是存在堆区间中的数据的地址。存了对象地址的变量,又叫对象的引用
    c.默认情况下创建对象就会在堆中取开辟空间存储数据,亲切将地址返回;
        如果是数字,字符串系统不会直接开辟空间,会做缓存,每次使用前会先在缓存中看之前有没有存过,没有存过再开辟空间,存了直接返回之前的数据地址

3.数据的销毁:通过垃圾回收机制来管理内存的释放(java,c++等也是)

    原理:看一个对象的引用计数是否为0,为0就销毁,否则保留
    引用计数:对象的地址被变量保存(引用)的次数
    垃圾回收机制:每隔一段时间清理内存(清除引用计数为0的对象),并不是一直在清理 
    a.增加对象的引用计数:使用变量存储该对象的地址
    getrefconut(对象) --  获取对象的引用计数 (导入:from sys import getrefconut)
    b.减少对象引用计数:
    删除引用或者让当前对象的引用成为别的对象的引用

四.pygame最小系统:

        import pygame   # 导入pygame模块
        pygame.init()   # 初始化pygame模块
        window = pygame.display.set_mode((400,600))   # 创建一个像素为(400,600)的窗口
        window.fill((255,255,255))  # 渲染背景(白色)
        pygame.dispaly.flip()  # 将渲染的背景显示在窗口上
        while True:
           for enent in pygame.event.get():  #  检测事件的发生
              if event.type == pygame.QUIT:  #  事件类型为点击关闭按钮
                   exit()       # 退出程序
上一篇 下一篇

猜你喜欢

热点阅读