美文网首页
Python学习总结【连载】(十四)

Python学习总结【连载】(十四)

作者: Juttachen_8e9d | 来源:发表于2018-07-03 14:02 被阅读20次

    Python学习总结【连载】(十四)

    2018.06.29 Juttachen


    概述

    • 48 类的多态
    • 49 运算符的重载
    • 50 多继承
    • 51 对象的内存管理
    • 52 包的使用

    四十八、类的多态

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

        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()
    

    四十九、运算符的重载

    类中可以通过相应的模块方法。来实香的比较,来实现对象的比较运算(>,<)和加减运算(+,-)。
    实现后就可以通过运算符'>';'<'来判断对象的大小。通过运算符‘+’和‘-’来求两个对象的和。

    怎么重载?
    > -->gt
    < -->lt
    + -->add
    - -->sub

        class Student(object):
            """docstring for Student"""
            def __init__(self, name='',age=0,score=0):
                super(Student, self).__init__()
                self.name = name
                self.age = age
                self.score = score
    
            # 重载'>'符号
            # 对象1>对象2
            # self ->对象1;other ->对象2
            def __gt__(self,other):
                # 怎么实现就看怎么判断大于的
                return self.age > other.age
    
        stu1 = Student('ming',18,90)
        stu2 = Student('hua',20,80)
        print(stu1 > stu2)
        print(stu1 < stu2)
    

    说明:如果大于比较和小于比较的内容是一样的,就只需要重载其中一个符号就可以了,使用另一个的时候系统会自动取反
    一次重载只能判断一个方面
    +,- 不能同时重载,要用加的时候就重载加,要用减的时候就重载减

    五十、多继承

    python支持多继承

        class Animal:
            """docstring for Animal"""
            def __init__(self,age,name):
    
                self.age= age
                self.name =name
    
        class Fly:
            """docstring forFly"""
            def __init__(self, arg):
                self.arg = arg
    

    Bird同时可以继承Animal,Fly类数

        class Bird(Animal,Fly):
            """docstring for Bird"""
            pass
    

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

    五十一、对象的内存管理

    对象值是存在堆中的,Python自动回收的
    掌握:对象到底什么时候被销毁(回收)

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

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

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

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

    五十二、包的使用

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

    举例:对时间操作的相关功能
    --->1.日期对应的时间(年月日 -> 获取当天的时间,获取指定某一天对应的星期,计算那一年是闰年)
    --->2.时分秒(秒钟,计算小时数,分数,时间相加)
    --->3.时间戳(时间转换,时间加密)

    创建python Packege,就可以了(和普通文件夹里区别是有一个init.py文件)
    通过import或者from..import..就可以调用了

    相关文章

      网友评论

          本文标题:Python学习总结【连载】(十四)

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