【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()

四,总结

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

原文地址:https://www.cnblogs.com/liupengpengg/p/12882246.html