zoukankan      html  css  js  c++  java
  • python-32-类的组合与初识继承

    前言

    组合:在一个类的属性中调用了另一个类,将另一个类的对象作为数据属性,称为类的组合。

    继承:一种新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类,先有父类才会有子类

    一、类组合

    组合指的是,在一个类中调用了另一个类,将另一个类的对象作为数据属性,称为类的组合。

    1、组合实例1:

    ①Ojb_1是装备库类,func_name是一件装备,人物装备后会增加1000的战力,self.agg=原人物的战力

    ②Ojb_2是角色类,有角色的名称与原角色的战力等信息,self.Ojb_1是将原人物的战力先传至装备库,只要人物调用装备了func_name就会在原战力基础上增加1000

    # 1、组合实例
    class Ojb_1:
        '''假设Ojb_1是一个装备库类,func_name是其中一件装备,装备后加1000战力。'''
        def __init__(self, agg):
            self.agg = agg
    
        def func_name(self):
            self.agg += 1000                # 在本身的战力上+1000
            return self.agg                 # 返回最终战力
    
    class Ojb_2:
        '''假设Ojb_2是一个角色类,每个角色都有名称等信息'''
        def __init__(self, name, agg):
            self.name = name                # 角色名称
            self.agg = agg                  # 本身的战力
            self.Ojb_1 = Ojb_1(self.agg)    # 将该人物原来的战力传到装备库类
    
    if __name__ == '__main__':
        '''假设广深小龙原来战力=500'''
        r1 = Ojb_2('广深小龙', 500)
        res = r1.Ojb_1.func_name()
        print(res)

    2、组合实例2
    假如:我是一个人类,叫广深小龙,我学的是Python,我的生日是1999年6月6日,工作是IT,地址是广深

    # 2、实例2
    # 我是一个人,叫广深小龙,我学的是Python,我的生日是1999年6月6日,工作是IT,地址是广深
    class Work:
        '''工作是IT,用的是Python,所以我学习Python'''
        def work_lg(self, work='IT', lg='Python'):
            return '工作是:%s,用的是:%s' % (work, lg)
    
    class Birth:
        '''出生日期:birth,地址:address'''
        def birth_add(self, birth, address):
            return '出生日期:%s,地址:%s' % (birth, address)
    
    class Race:
        def __init__(self, name):
            self.name = name
            self.Work = Work()
            self.Birth = Birth()
    
    if __name__ == '__main__':
        r = Race('广深小龙')
        print(r.Work.work_lg())
        print(r.Birth.birth_add('1996.6.6', '广深'))

    二、初识继承

    就好像人、猪等动物,抽取成为一个动物的父类,人类、猪都可以继承动物为父类:

    1、简单认识继承,顺序:父类在上面,子类在后面。(父总比子出生得早)

    # 1、初识继承
    class A:pass
    
    class B:pass
    
    # Python语言中一个类可继承多个父类
    class AB_son(A, B):pass     # 继承了A、B类
    print(AB_son.__bases__)       # 查看父类
    print(A.__bases__)            # 没有继承父类,默认是类的祖宗:object

     2、继承用法

    实例化子类后,可以用子类调用父类的某个方法:

    # 2、继承用法实例
    class Work:
        '''工作是IT,用的是Python,所以我学习Python'''
        def work_lg(self, work='IT', lg='Python'):
            return '工作是:%s,用的是:%s' % (work, lg)
    
    
    class Race(Work):               # 继承了 Work 类
        def __init__(self, name):
            self.name = name
    
    if __name__ == '__main__':
        r = Race('广深小龙')
        res = r.work_lg()            # 直接调用父类的方法
        print(res)

    总结:

    • 只要是子类的对象调用,子类中有的名字 一定用子类的,子类中没有才找父类的,如果父类也没有报错
    • 如果父类 子类都有 用子类的
    • 如果还想用父类的,单独调用父类的:父类名.方法名 需要自己传self参数

    正常的代码中 单继承 === 减少了代码的重复,继承表达的是一种 子类是父类的关系!

    欢迎来大家QQ交流群一起学习:482713805 !!!

  • 相关阅读:
    python字符串与字典转换
    B站弹幕爬取 / jieba分词
    【计算机网络】第四章 网络层(1)
    【计算机网络】第三章 传输层(4)
    【计算机网络】第三章 传输层(3)
    【计算机网络】第三章 传输层(2)
    【计算机网络】第三章 传输层(1)
    【计算机网络】第二章 网络应用(5)
    【计算机网络】第二章 网络应用(4)
    【计算机网络】第二章 网络应用(3)
  • 原文地址:https://www.cnblogs.com/gsxl/p/12494946.html
Copyright © 2011-2022 走看看