美文网首页
Day-14 继承和多态

Day-14 继承和多态

作者: FansYuercero | 来源:发表于2018-08-02 19:53 被阅读0次

子类可以拥有父类所有的非私有的属性和方法
子类可以重写父类的方法
父类不能使用子类的方法

子类可以直接添加其他方法,也可以重写父类方法
重写:重新实现从父类继承下来的方法
    a.完全重写
        直接重新实现父类的方法
    b.保留父类实现的功能,再添加新功能
        super().fun()
        super().父类方法
对象和类调用方法的过程:先看当前类是否
存在这个方法,如果没有,再从父类中找

class  Animal(object):
    number = 10
    def __init__(self):
        self.age = 0
        self.color = ''
    def eat(self):
        print('eat')
    @classmethod
    def get_number(cls):
        return  cls.number
class Dog(Animal):
    def look_after(self):
        print('s')
    # 完全重写父类中的方法
    # def eat(self):
    #   print('w')
    # super()保留父类方法再重写
    def eat(self):
        super().eat()
        print('s')
    @classmethod
    def get_number(cls):
        print(super().get_number())
if __name__ == '__main__':
    dog1 = Dog()
    dog1.eat()
    Dog.get_number()
    print(Animal.get_number())

对象属性的继承:是通过继承init方法来继承

class Person(object):
    def __init__(self,name,age):
        self.name = name
        self.age =age
class Staff(Person):
    # 添加对象属性,重写__init__方法
    # 如果要保留父类对象属性,用super(),
    # 去调用父类的__init__方法
    def __init__(self,name,age,salary):
        super().__init__(name,age)
        self.salary =salary

if __name__ == '__main__':

    emp = Staff('s',22,'90K')
    print(emp.name,emp.age,emp.salary)

s 22 90K

多态:子类继承父类的方法,可以对方法进行重写,
一个方法就有多种形态(多态的表现)
继承产生多态

重载:一个类中可以有多个名字相同的方法,就叫重载
Python中不支持方法的重载

运算符的重载:(重新定义运算符运算的过程)

、<、+、-
大于小于符号只需要重载其中的一个,另外一个的结果,
直接是重载的结果取反

class Student:
    def run(self, name):
        print('%s在跑' % name)
class Student2:
    def __init__(self, name='', age=0, height=0):
        self.name = name
        self.age = age
        self.height = height
    def __gt__(self, other):
        # 比较对象1>对象2的时候是比较的他们的height属性
        return self.height > other.height
        # return self.age > other.age
        # return id(self) > id(other)

    # 重载:<
    def __lt__(self, other):
        return self.age < other.age

    # 重载: +
    def __add__(self, other):
        return self.age + other.age

    # 重载: -
    def __sub__(self, other):
        return self.height - other.height


if __name__ == '__main__':
    stu = Student()
    stu.run('余婷')

    stu1 = Student2('aa', 18, height=170)
    stu2 = Student2('bb', 20, height=140)

    if stu1 > stu2:
        print('学生1大于学生2啊啊')

    if stu1 < stu2:
        print('学生1大于学生2')
    else:
        print('学生2小于学生1')

    print(stu1 + stu2)
    print(stu1-stu2)

    print(100+200)
    print('abc'+'abc')

python内存管理原理
内存中有两个特殊的区域:栈,堆

栈:栈中的内存是系统自动管理(内存的开辟和内存的释放)
作用域结束内存释放

堆:堆中的内存都是需要写程序去开辟和释放的
(Python中自动开辟和释放)

当一个对象没有引用的时候,对象对应的内存空间就会被释放
(引用计数机制)
引用:存储对象地址的变量


相关文章

  • Day-14 继承和多态

    子类可以拥有父类所有的非私有的属性和方法子类可以重写父类的方法父类不能使用子类的方法 对象属性的继承:是通过继承i...

  • 周记二

    周一:今天学了继承和多态,继承有public继承、protected继承、private继承,多态和虚函数一对,抽...

  • Python类和实例

    关键词:class 继承和多态:(object) 如果没有其他需要继承的类,则默认继承(object) 多态这里和...

  • 继承和多态

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Sub...

  • 继承和多态

    继承和多态 1. 继承的优缺点 优点:(1)子类可以灵活地改变父类中的已有方法;(2)能够最大限度的实现代码重用。...

  • 继承和多态

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Sub...

  • 继承和多态

    date: 2016-10-09 18:45:18 这里继承和多态的概念与java的概念差不多。概念还是需要多次理...

  • 继承和多态

    继承是面向对象方法中的一个重要概念。特殊类拥有一般类的属性和操作。称为特殊类对一般类的继承。继承是一种由已有类来扩...

  • 继承和多态

  • 继承和多态

    继承和多态: 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称...

网友评论

      本文标题:Day-14 继承和多态

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