zoukankan      html  css  js  c++  java
  • python学习-继承


    # 继承
    # 你的是我的,我的还是我的

    class Animal:

    def __init__(self,name,private_v1):
    self.name = name
    self._private_v1 = private_v1
    self.__private_v2 = "private_really"

    def run(self):
    print("跑!!")

    # a = Animal("cat")
    # 狗 啃骨头
    # class 子类名(父类名) # Animal 基(base)类 Dog 多个派生类
    class Dog(Animal):

    def __init__(self,name,kind):
    self.name = name
    self.kind = kind


    def eat(self):
    print("一只名叫 {} 的 {} 在啃骨头".format(self.name,self.kind))

    def run(self):
    print("我是一条狗,我有四条腿跑!!")


    # 实例化
    # dog = Dog("二狗")
    dog = Dog("二狗","哈士奇")
    dog.run()
    dog.eat()

    # 品种 重写 和父类的方法名称一样。但是在子类里面,重新实现。
    # 子类呢,需要父类里现有的功能,但是要在这个功能之外,还在再扩展。super 超级
    # super - 超类 父类
    #

    # 狗 啃骨头
    # class 子类名(父类名) # Animal 基(base)类 Dog 多个派生类
    class DogV2(Animal):

    def __init__(self,name,kind,private_v1): # self是子类的实例对象
    # self.name = name
    # Animal.__init__(self,name) # 父类的实例 子类的实例对象也是父类的实例对象
    super().__init__(name,private_v1) # 调用父类现成的方法
    # 方法二
    # super(DogV2,self).__init__(name)

    self.kind = kind # 扩展子类的特性

    def eat(self):
    print("一只名叫 {} 的 {} 在啃骨头".format(self.name,self.kind))

    def gogo(self): # 完全颠覆父类的做法
    # super().run()
    print("我是一条狗,我有四条腿跑!!")
    print(self._private_v1)
    self.run()


    #hsq = DogV2("小白","二哈")
    #hsq.run()

    # 关闭修改,开放扩展

    # isinstance(实例对象,类) # 谁是谁的实例。
    #print(isinstance(hsq,DogV2)) # hsq是DogV2实例来的
    #print(isinstance(hsq,Animal)) # hsq也是父类Animal的实例
    #print(isinstance(hsq,(Animal,DogV2)))

    # list,str,dict
    mylist = [1,2,3] # type
    print(isinstance(mylist,list))

    # 继承 - 完全继承。
    # 重写(完全 重写)、重写情况之一:扩展(super) -- 子类和父类函数名称是一样的。

    # 私有化的继承 _ 子类可以使用 __不对子类开放

    # 多继承
    # 人(super) 学生(init) 员工(init) # 菱形继承 super
    class Student:
    def study(self):
    print("我是学生,我爱学习,我爱柠檬班")


    class Employee:
    def work(self):
    print("我要赚钱,我要工作,我爱工作!!")

    class People(Student,Employee):

    def do_something(self):
    self.work()
    self.study()

    def work(self):
    pass

    p = People()
    p.do_something()

    # issubclass 子类
    # issubclass(子类,(父类1,父类2....))
    print(issubclass(People,Student))
    issubclass(People,Employee)
    issubclass(People,(Student,Employee))

    # 总结 object-py2
    # 继承 - 完全继承,除了__开头的属性和方法之外,子类拥有父类的一切。
    # 你的是我的,我的还是我的。
    # 继承之后,在子类里可以像调用自己属性和方法一样,来调用父类的属性和方法。self.XXX

    # 在完全继承之后,定义子类的特性。

    # 如果你想对父类原有的行为进行改造、优化、扩展。可以重写父类的行为。
    # 重写的要求:行为名称与父类的行为名称一样。
    # 重写的两种方式:1、完全颠覆 2、保留父类的做法,在它的基础上再扩展其它的内容。
    # 扩展方式来说:super - 超类。
    # 子类当中,super的2种表达:super().方法(参数列表)
    # super(子类名,self).方法(参数列表)

    # isinstance(实例对象名,类名)
    # issubclass(子类,父类)

    # 多继承 - 可以有多个父类。
    # 子类名(父类1,父类2....)

    # 从excel操作 - 测试数据操作

  • 相关阅读:
    复利计算单元测试-软件工程
    实验一 操作系统
    <构建之法>前三章读后感—软件工程
    复利计算总结-软件工程
    实验0-操作系统
    复利计算1.0~2.0~3.0~4.0-软件工程(网页版)
    典型用户与场景
    0608场景(用户故事) 任务
    构建之法读后感+学习和诚信
    0603团队变化+sprint第二个冲刺
  • 原文地址:https://www.cnblogs.com/qsmyjz/p/11261260.html
Copyright © 2011-2022 走看看