• 【Python】类的组合介绍(面向对象)


    一,类的组合概要

    场景:模拟对计算机的产品介绍。

              包含计算机的厂商,型号,价格,安装了什么系统等等的具体信息介绍。通过面向对象的思维去创建。

              更深入的了解对于一台电脑的介绍在计算机中是如何被实现的。

    二,创建Computer_detail类

    思路:1. 计算机包含了 [基本信息,硬件信息,操作系统,软件信息,用户信息] 等特征

               2. 把每个特征分为一个类创建,把每个特征作为一个模块

               3. 每个类中的静态特征(变量),和动态特征(函数或者叫做方法)。统称实例变量和实例函数模块化。

               4. 这么做的目的是便于Computer类再调用的时候通过类的组合直接调用。每个模块也结构清晰,调用及日后修改也方便维护。

    # 1. 基本信息
    class basic_info:
        def __init__(self,brand,model,color,weight,price,assets_number,by_time):
            self.brand = brand
            self.model = model
            self.color = color
            self.weight = weight
            self.price = price
            self.assets_number = assets_number
            self.by_time = by_time
    
        def show(self):
            print("================基本信息==================")
            print("厂商: %s" % (self.brand))
            print("型号: %s" % (self.model))
            print("颜色: %s" % (self.color))
            print("重量: %s" % (self.weight))
            print("价格: %s" % (self.price))
            print("商品编号: %s" % (self.assets_number))
            print("购买时间: %s" % (self.by_time))
    
    # 硬件信息
    class hardware:
        def __init__(self,cpu,memory,disk,monitor):
            self.cpu = cpu
            self.memory = memory
            self.disk = disk
            self.monitor = monitor
    
        def show(self):
            print("================硬件信息==================")
            print("CPU: %s" % (self.cpu))
            print("内存: %s GB" % (self.memory))
            print("硬盘: %s GB " % (self.disk))
            print("显示器: %s " % (self.monitor))
    
    # 操作系统
    class os:
        def __init__(self,manufacturer,os_name,serial_number):
            self.manufacturer = manufacturer
            self.os_name = os_name
            self.serial_number = serial_number
    
        def show(self):
            print("================操作系统信息==================")
            print("制造商: %s" % (self.manufacturer))
            print("操作系统: %s" % (self.os_name))
            print("序列号: %s " % (self.serial_number))
    
    
    # 软件信息
    class software:
        def __init__(self,*args):
            self.soft_list = args
    
        def show(self):
            print("================软件信息==================")
            for item in self.soft_list:
                print("*",item)
    
    # 用户信息
    class userInfo:
        def __init__(self,user_id,user_name,dept,position):
            self.user_id = user_id
            self.user_name = user_name
            self.dept = dept
            self.position = position
    
        def show(self):
            print("================用户信息==================")
            print("用户编号: %s" % (self.user_id))
            print("用户姓名: %s" % (self.user_name))
            print("部门: %s " % (self.dept))
            print("职位: %s " % (self.position))

    三,创建Computer类

    思路:1. 为了很好的实现类与类之间的调用。通过导包,类的组合来调用Computer_detail类中的实例变量及函数

               2. 创建computer本身这个类(computer_detail中只是computer的特征,而computer是要把这些特征结合其自身)

               3. 创建computer类中的传参是把computer_detail中的每个特征类作为参数传递(*这里很好的体现了类的组合的好处)

               4. 展示computer中的每个特征或者部分特征通过,调用特征类的实例变量及实例函数即可做到

               5. 单独创建一个属于computer类本身的show函数。这么做的好处是直接调用一个函数即可实现多函数中实例函数的打印

               6. 准备就绪就实例化对象,打印想打印的相应字段及函数即可

    from computer_detail import *
    
    class computer:
        def __init__(self,basic_info,hardware,os,software,userInfo):
            self.basic_info = basic_info
            self.hardware = hardware
            self.os = os
            self.software = software
            self.userInfo = userInfo
    
        def show(self):
            print("==================计算机信息总览=================")
            self.basic_info.show()
            self.hardware.show()
            self.hardware.show()
            self.os.show()
            self.software.show()
            self.userInfo.show()
    
    
    if __name__ == "__main__":
        #实例化每个明细
        liupeng_basic = basic_info("Lenovo ThinkPad","T470","黑色",1.385,10380,"CN950041","2017-7-20")
        liupeng_hardware = hardware("I5","8 Core","256GB",23)
        liupeng_os = os("Micosoft","Win7 Service pack 1","00426-OEM-8992663-00009")
        liupeng_software = software("Micosoft Office","Python3.7","Pychrom 2019.3","WinRAR","WinSCP","百度网盘","爱奇艺")
        liupeng_userInfo = userInfo(212291,"liupeng","Panasonic Windows Support Team","Team Leader")
    
        #实例化computer类
        liupeng_pc = computer(liupeng_basic,liupeng_hardware,liupeng_os,liupeng_software,liupeng_userInfo)
    
        #调用某些属性
        #print(liupeng_pc.basic_info.brand)
        #print(liupeng_pc.software.soft_list)
        #print(liupeng_pc.software.soft_list[-1])
        #print(liupeng_pc.userInfo.user_name)
        #print(liupeng_pc.hardware.cpu)
    
        #调用实例方法
        liupeng_pc.show()
        #liupeng_pc.software.show()

    四,总结

    虽然案例非常的简单。但是涉及了类的组合。很好的呈现了多类,多模块的理念。这种思维方式的应用对于日后我们在面向对象程序的开发起到了非常关键的作用。

  • 相关阅读:
    SQL盲注攻击的简单介绍
    xss编码小结
    XssEncode
    xss payload
    2014年八大信息安全峰会演讲
    xss bypass
    移动APP安全在渗透测试中的应用
    WAF实现扫描器识别
    thinkphp的系统变量
    thinkphp AOP(面向切面编程)钩子和行为
  • 原文地址:https://www.cnblogs.com/liupengpengg/p/12882246.html
Copyright © 2020-2023  润新知