美文网首页
Day15-总结

Day15-总结

作者: 年華盡耗_c24e | 来源:发表于2018-11-23 19:48 被阅读0次

    01-多继承

    1.多继承:

    让一个类同时继承多个类
    注意:实际开发一般不使用

    class Animal:
        num = 1
        def __init__(self,name = '',age = 0 , color = ''):
            self.name = name
            self.age = age
            self.color = color
        def show_info(self):
            print('%s%s%s%s'%(self.name,self.age,self.color))
    
    class Fly:
        info = '飞'
        def __init__(self,distance,speed):
            self.distance =distance
            self.speed = speed
    
        @staticmethod
        def show():
            print('会飞!')
    
    class Bird(Animal,Fly):
        pass
    
    # 两个类的字段能继承
    print(Bird.num,Bird.info)
    Bird.show()
    
    # 对象属性只能继承第一个类的对象属性
    bird = Bird()
    print(bird.name)
    

    2.多态:

    类的特点:封装,继承,多态
    封装:可以对多条数据(属性)多个功能(方法)进行封装
    继承:可以让一个类拥有另外一个属性和方法
    多态:有继承就有多态(一个事物的多种形态)

    02-运算符重载

    python中的函数不支持重载

    def fun1():
        pass
    def fun2();
        pass
    

    最终只保留最后一个fun1,前面的会被覆盖

    1.运算符重载

    python中使用运算符的时候,实质是在调用相应的魔法方法。(python中每个运算符对应一个魔法方法)

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

    03-内存管理机制

    1.堆和栈

    内存区域中分堆区间和栈区间:栈区间的内存的开辟和释放是自动的,堆区间内存是手动开辟释放;内存的管理,管理的是堆区间的内存;

    2.数据的存储

    a.

    python中所有的数据都是对象,都是保存在堆中的

    b.

    python中的所有的变量的存储的都是存在堆中的数据的地址。存了对象的地址的变量又叫对象的引用

    c.

    默认情况下创建对象就会在堆 中去开辟空间存储数据,并且将地址作为返回值;如果对象是数据,字符串会做缓存,而且使用的时候会先去缓存中看之前有没有存过,如果头就直接返回之前的数据的地址,没有才开辟新的空间存储数据

    3.数据的销毁

    python中通过垃圾回收机制来管理内存的释放

    原理:看一个对象是否销毁,就看这个对象的引用计数是否为0,不为0就不销毁

    引用计数:对象的引用个数
    注意:垃圾回收其实就是回收引用计数为0的对象,但是系统不会时时刻刻的检测引用计数是否为0,而是隔一段时间检测一次,如果检测到垃圾就回收

    from sys import getrefcount
    """
    getrefcount(对象) - 获取指定的对象的引用计数
    """
    

    4.增加引用计数:使用变量存对象地址

    list1 = [1]  # 对象[1]的引用计数是1
    print(getrefcount(list1))
    list2 = list1 # 对象[1]的引用计数是2
    print(getrefcount(list1))
    list3 = [list1,100] # 对象[1]的引用计数是3
    print(getrefcount(list1))
    

    5.减少引用计数

    a.删除引用

    b.让当前对象的引用成为别的对象引用

    del list3[0]
    print(getrefcount(list1))
    list2 = 100
    print(getrefcount(list1))
    

    04-游戏最小系统

    import pygame
    #1.创建游戏窗口
    # 创建游戏窗口
    """
    set_mode(窗口大小) - 窗口大小是一个元祖,有两个元素,width height
    set_mode((宽度,高度))
    宽度和高度的单位是像素
    """
    pygame.init()
    window =pygame.display.set_mode((600,600))
    # 将窗口填充成指定的颜色
    """
    fill(颜色)
    计算机颜色 :计算机三原色 - 红、绿、蓝(rgb)
                颜色值就是由三个数字组成,分别代表红、绿、蓝,数字范围:0 - 255
    python中的颜色是一个元祖,元祖中有三个颜色,分别是r,g,b
    (255,255,255) - 白色
    (0,0,0) - 黑色
    (255,0,0) - 红色
    (0,255,0) - 绿色
    """
    window.fill((255,255,255))
    # 将窗口展示到显示设备上
    pygame.display.flip()
    # 3.创建游戏循环
    while True:
        # 4.检测事件
        for event in pygame.event.get():
        # 区分不同事件,做出不一样的反应
         if event.type == pygame.QUIT:
             exit()
    

    相关文章

      网友评论

          本文标题:Day15-总结

          本文链接:https://www.haomeiwen.com/subject/stlsqqtx.html