美文网首页
day14总结

day14总结

作者: liuperson | 来源:发表于2018-08-02 21:01 被阅读0次

    一、重写

    继承后:
    a.子类可以拥有除父类继承的内容外,添加其他内容和方法
    b.父类不可以使用子类的方法和属性

    完全重写:
    重新实现从父类继承下来的方法
    保留父类,添加新的功能

    对象调用时,先看有没功能,没有才看父类,如果没有,看爷类

    关于方法:
    a.在子类中可以直接使用的方法

    class Ainmals(object):
        number=10
        """动物类"""
        def __init__(self):
            self.age=0
            self.color=''
        def eat(self):
            print('吃骨头')
        @classmethod
        def get_number(cls):
            print(cls.number)
    
    class Dog(Ainmals):
    
        def wtach_door_dog(self):
            print('看家')
    
        def eat(self):
            super().eat()
            print('不好吃')
    
        @classmethod
        def get_number(cls):
            return super().get_number()
    dog=Dog()
        dog.name='大飞'
        dog.age=3
        dog.eat()
        dog.wtach_door_dog()
        dog.get_number()
    

    二、添加属性

    继承属性的时候,继承了init方法
    给当前类添加对象属性,如果要保留父类的对象属性,需要使用supper(),去调用父类的init方法

    class Person:
        def __init__(self,name,age):
            self.name=name
            self.age=age
    class Staff(Person):
        def __init__(self,name,age,salary):
            super().__init__(name,age)
            self.salary=salary
    if __name__ == '__main__':
        s1=Staff('大飞',28,44)
        print(s1.salary)
    
        print(s1.age)
    
    class Person:
        def __init__(self,name,age,sex):
          self.name=name
          self.age=age
          self.sex=sex
          self.tall=0
    
    class Student(Person):
        def __init__(self,name='',age=0,tel=''):
            super().__init__(name,age,sex='女')
            self.id='22'
            self.score='33'
            self.tel=tel
    
    s1=Student('大飞',22,123)
    print(s1.name,s1.age,s1.tel)
    
    p1=Person('张飞',22,'男')
    print(p1.name,p1.age,p1.sex)
    
    s1=Student('李三',18,110)
    print(s1.name,s1.age,s1.sex)
    

    三、运算加载符

    python中,一个类下,参数不同,叫重载,但不支持,只以后面那个出结果,前面都覆盖了

    
    class Student:
        def run(self):
            print('在跑')
        def run (self,name):
            print('%s在跑'% name)
    s1=Student()
    s1.run('yuting')
    
    2.重载,重新定义运算符运算的过程
    
    """
    class Student2:
        def __init__(self,name='',age=0,height=0):
            self.name=name
            self.age=age
            self.height=height
    
    
        def __gt__(self, other):
            #比较的是属性值
            return self.height>other.height
        def __lt__(self, other):
            return self.age<other.age
        def __add__(self, other):
            return self.age+other.age
        def __sub__(self, other):
            return self.age-other.age
    stu1=Student2('aa',18,170)
    stu2=Student2('bb',19,150)
    if stu1>stu2:
        print('====')
    if stu1<stu2:
        print('====')
    print(stu1 + stu2)
    print(stu1-stu2)
    

    四、内存管理

    python内存管理原理

    内存中两个特殊的区域
    栈:里面的内存管理是系统自动管理(内存开辟和释放(作用域结束,函数结束胡释放,程序结束,就释放))

    堆:需要程序员写程序来开辟和释放的(python中也已经自动化)

    原理:堆中的数据到底是什么时候释放的
    看一个值有几个引用,当一个值没有引用的时候,值对应的内存空间就会被释放
    (引用计算机制)
    引用:存储对象地址的变量

    五、包的使用

    封装:
    对一个功能————》函数
    对功能------》模块和类
    对数据-----》类、字典
    对多个类----》模块
    对多个模块---》包(特殊的文件夹,里面有init.py文件)

    导入包
    import packbag1
    导入某个包中的模块
    from packbag1 import my_math
    导入某个包的某个模块中某个函数和类
    from packbag1.my_math import sum,Math

    作业:
    0.定义⼀一个学⽣生类。有属性:姓名、年年龄、成绩(语⽂文,数学,英语)[每课成绩的类型为整数] ⽅方法: a. 获取学⽣生的姓名:getname() b. 获取学⽣生的年年龄: getage() c. 返回3⻔门科⽬目中最⾼高的分数。get_course()

    class Scores:
        def __init__(self):
            self.chinese = int(input('语文:'))
            self.math = int(input('数学:'))
            self.english = int(input('英语:'))
    
    class Student(Scores):
        def __init__(self,name,age):
            super().__init__()
            self.name=name
            self.age=age
    
        def get_name(self):
            print (self.name)
        def get_age(self):
            print(self.age)
    
        def get_course(self):
            print( '最大值是:',max(self.chinese,self.math,self.english))
    
    s1=Scores
    s2=Student('大飞',22)
    s2.get_course()
    

    结果显示:

    语文:1
    数学:2
    英语:3
    最大值是: 3
    

    1.建⽴立⼀一个汽⻋车类Auto,包括轮胎个数,汽⻋车颜⾊色,⻋车身重量量,速度等成员变量量,并通过不不同的构造⽅方法创 建实例例。⾄至少要求 汽⻋车能够加速 减速 停⻋车。 再定义⼀一个⼩小汽⻋车类CarAuto 继承Auto 并添加空调、CD等成 员变量量 覆盖加速 减速的⽅方法

    
    class Auto:
        def __init__(self,tyre=4,color='yellow',weight=500,speed=100):
            self.tyre=tyre
            self.color=color
            self.weight=weight
            self._speed=speed
    
        def fast(self):
            if 0<= self._speed<60:
                print('请加速')
        def slow(self):
            if 60<=self._speed<120:
                print('请减速')
            else:
                print('请停车')
    
    a1=Auto()
    a1.fast()
    a1.slow()
    
    class CarAuto(Auto):
        def __init__(self,air,Cd):
            super().__init__()
            self.air=air
            self.Cd=Cd
    
        def fast(self):
             if 0<= self._speed<60:
                print('请加速')
        def slow(self):
            if 60<=self._speed<120:
                print('请减速')
            else:
                print('请停车')
    
    a2=CarAuto('格力','好歌')
    a2.fast()
    a2.slow()
    

    管理理员是⼀一种特殊的⽤用户。编写⼀一个名为Admin 的类,让它继承User类。添加⼀一个名为privileges 的属性, ⽤用于存储⼀一个由字符串串(如"can add post"、"can delete post"、"can ban user"等)组成的列列表。编写⼀一个名为 show_privileges()的⽅方法,它显示管理理员的权限。创建⼀一个Admin 实例例,并调⽤用这个⽅方法。

    class User:
        firstname=''
        lastname=''
    
        def __init__(self,name='老张',age=50,sex='男'):
            self.name=name
            self.age=age
            self.sex=sex
    
        def describeuser(self):
            print('姓名:%s 年龄:%s 姓名:%s'% (self.name,self.age,self.sex))
    
        def greetuser(self):
            print('hello,你好:%s'% self.name)
    class Admin(User):
        def __init__(self,privileges=''):
            super().__init__()
            self.privileges=privileges
    
        def show_privileges(self):
            print('管理权限:%s'% self.privileges)
    
    a1=Admin(['can add post', 'can delete post', 'can ban user'])
    a1.show_privileges()
    

    3.创建⼀一个Person类,添加⼀一个类字段⽤用来统计Perosn类的对象的个数

    
    class Person:
        count=0
        def __init__(self,name=''):
            self.name=name
            Person.count+=1
    
    
    p1=Person('张三')
    p2=Person('李四')
    print(Person.count)
    
    

    相关文章

      网友评论

          本文标题:day14总结

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