• python基础--面向对象之继承


    # 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类,
    # 父类又可以称为基类或者超类,新建的类可以称为派生类,子类
    class ParentClass1:
        # 定义父类 1
        pass
    class ParentClass2:
        # 定义父类 2
        pass
    class SubClass1(ParentClass1):
        # 继承一个父类
        pass
    class SubClass2(ParentClass1,ParentClass2):
        # 继承两个父类
        pass
    print(SubClass1.__bases__) # 查看父类
    print(SubClass2.__bases__)
    class Animal:
        def eat(self):
            print("%s is eating" %self.name)
        def drink(self):
            print("%s is drinking" % self.name)
        def shit(self):
            print("%s is shiting" %self.name)
        def pee(self):
            print("%s is peeing" %self.name)
    # 子类可以使用父类的函数属性和数据属性
    class Cat(Animal):
        def __init__(self,name):
            self.name = name
            self.breed = ""
        def cry(self):
            print("喵喵叫")
    class Dog(Animal):
        def __init__(self,name):
            self.name = name
            self.breed = ""
        def cry(self):
            print("汪汪叫")
    
    c1 = Cat("小白家的黑猫")
    c1.eat()
    # 当前类中如果没有eat属性,就会去父类中找
    
    c2 = Cat("小黑家的白猫")
    c2.drink()
    
    d1 = Dog("胖子家的瘦狗")
    d1.eat()
    # 如果子类中有和父类中相同的属性,会优先使用子类中的属性(如果没有特殊说明)
    # 因此,我们在开发的过程中,如果定义了一个类A,然后想重新建立一个类B,而且
    # B的很多功能和A是相同的,我们只需要把A继承过来,然后在B中写一写不一样的功能
    # 就可以了
    # 注意当有继承的时候,一定要注意属性查找
    class F:
        def f1(self):
            print("F.f1")
        def f2(self):
            print('F.f2')
            self.f1()
    class S(F):
        def f1(self):
            print("S.f1")
    s = S()
    s.f2()
    # 我们来看一下代码执行过程
    # s为一个对象--要执行f2方法--自己的类中没有--在父类中找--父类中有--
    # 注意;父类中这个self是s--打印F.f2--然后执行f1,--先在自己类中找,--
    # 找到了--打印S.f1
    # 假如我们在子类中相用父类的方法,两种办法
    # 一,直接用类名即:父亲名.方法名()
    # 二,super()
    class Animal:
        def __init__(self,name,age,gender):
            self.name = name
            self.age = age
            self.gender = gender
    
    class people(Animal):
        def __init__(self,name,age,gender):
            Animal.__init__(self,name,age,gender)
    class Cat(Animal):
        def __init__(self,name,age,gender):
            # 这是不用传入对象本身,
            # super()相当于super(Cat,self)
            super().__init__(name,age,gender)
    peo = people('wangcong',21,'mal')
    cat = Cat('cat',2,'male')
    print(peo.name,cat.name) # wangcong cat
    # 最后总结一点,有关组合和继承,
    # 1,人是动物,猫是动物,这就是继承关系,
    # 2,学校有教室,学生有书本。这就是组合关系,
    #       一个类在另一个类中,一个对象跟另一个对象有关系
    # 简单看一下组合
    list1 = list() # 我们之前说list是一个类,用来实例化一个对象
    str1 = "hello" # 同样str1也是一个字符串对象
    list1.append(str1)
    print(list1)
    # 此时,他们之间就是组合关系
  • 相关阅读:
    JavaWeb 之 三层架构:软件设计架构
    JavaWeb 之 MVC 开发模式
    JavaWeb 之 JSTL 标签
    Java 之 JSP
    【LeetCode-动态规划】不同的二叉搜索树
    【深度学习】模型压缩
    【LeetCode-数学】两数相除
    【LeetCode-链表】删除链表的倒数第N个节点
    【LeetCode-链表】合并K个排序链表
    【LeetCode-链表】合并两个有序链表
  • 原文地址:https://www.cnblogs.com/cong12586/p/11366370.html
Copyright © 2020-2023  润新知