美文网首页
DAY15 Python基础:operate class 201

DAY15 Python基础:operate class 201

作者: 十二右 | 来源:发表于2018-06-29 19:52 被阅读0次

    01-polymorphism 多态

    02-operator overload 运算符重载

    03-multiple inheritance 多继承

    04-object memory management 对象的内存管理

    05-the application of package 包的应用


    01-polymorphism 多态

    多态:就是一个事物有多种形态。继承就会产生多态
    类的多态:通过过继承,同一个方法可以有多种实现

    class Animal:
        def shout(self):
            print('嗷嗷叫!')
    
    
    class Cat(Animal):
        def shout(self):
            print('喵喵叫!')
    
    
    class Dog(Animal):
        def shout(self):
            print('汪汪叫!')
    
    
    animal1 = Animal()
    animal1.shout()
    
    cat1 = Cat()
    cat1.shout()
    
    dog1 = Dog()
    dog1.shout()
    

    02-operator overload 运算符重载

    需要对象进行运算操作的时候,进行运算符重载
    类中可以通过实现相应的魔法方法,来实现对象的比较运算(>、<)和加减运算(+、-)
    实现后就可以通过运算符'>'和'<'来判断对象的大小。通过运算符'+''-'来求两个对象的和与差

    怎么重载

    > -->__gt__
    < -->__lt__
    + -->__add__
    - -->__sub__

    class Student:
    
        def __init__(self, name='', age=0, score=0):
            self.name = name
            self.age= age
            self.score = score
    
        # 重载'>'符号
        # 对象1(self)>对象2(other)
        def __gt__(self, other):
                # 怎么实现就看怎么判断大于的
            return self.age > other.age
    
        # 重载'<'符号
        def __lt__(self, other):
            return self.score < other.score
    

    说明:如果大于比较和小于比较的内容是一样的,只需要重载其中一个符号就可以了

        # 重载'+'
        def __add__(self, other):
            return self.score + other.score
    
    
        #重载'-'
        def __sub__(self, other):
            return self.score - other.score
    stu1 = Student('小明', 18, 90)
    stu2 = Student('小花', 20, 80)
    
    print(stu1 < stu2)
    print(stu1>stu2)
    print(stu1 + stu2)
    print(stu1 - stu2)
    

    03-multiple inheritance 多继承

    **python支持多继承

    class Animal:
        def __init__(self, age=0, name=''):
            self.age = age
            self.name = name
    
    
    class Fly:
        def fly(self):
            print('飞起来')
    

    Bird类同时继承Animal类和Fly类。同时拥有这两个类的属性和方法

    class Bird(Animal, Fly):
        pass
    
    
    b1 = Bird()
    print(b1.name)
    b1.fly()
    

    注意: 实际开发中,不到万不得已不建议使用多继承

    04-object memory management 对象的内存管理

    对象值是存在堆中,python自动去回收的

    掌握,对象到底什么时候才会被销毁(回收)

    栈中内容是系统自动创建自动销毁的,不需要管理。平时说的内存管理指的是对堆中的内存的管理;
    python中能够存到堆里面的数据,全是对象

    python中管理内存的机制:
    python是通过引用计数来管理内存的,就看一个对象的引用计数的值是否为0,为0就销毁;
    让一个变量存储对象的地址,那么这个变量就是对象的一个引用;如果变量存别的值或者删除这个变量,都会让这个引用消失

    应用:如果想要对象提前被销毁,就删除其所有的引用。

    class Person:
    
        def __init__(self, name='', age=0, scores=[]):
            self.name = name
            self.age = age
            self.scores = scores
    
    
    # p1是一个变量,变量存的是对象的地址; 变量p1本身是在栈里面的
    # Person()返回值才是对象
    p1 = Person()
    p2 = p1
    lis1 = [p1]
    dict1 = {'aaa': p1}
    
    p1 =10
    del p2
    

    05-the application of package 包的应用

    函数 ---> 对实现功能的代码的封装
    类 ---> 对属性和方法进行封装
    模块 ---> 对多个函数或者多个类进行封装
    包 ---> 对多个模块进行封装

    包的创建:pycharm新建file里的python package
    举例:对时间操作的相关功能
    --> 1.日期对相应的时间(年月日 -> 获取当天的时间\获取指定哪一天对应的星期\计算哪一年是闰年)
    ----> 2.时分秒 (秒钟/计算小时数/分数/时间相加等)
    ----> 3.时间戳 (时间转换、时间加密)

    通过from--import 和 import导入包的内容

    from my_time import my_date
    my_date.get_date()
    
    
    import my_time
    my_time.my_date.get_date()
    

    相关文章

      网友评论

          本文标题:DAY15 Python基础:operate class 201

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