• 七. python面向对象(组合)


    1.类的组合使用

    # 组合就是 把小的功能组合成大的功能
    # 例如: 这里是 把人这大个类   分成几个小类   进行组合类  从而形成了人
    #
    class Head(object):
             pass
    #
    class Foot(object):
             pass
    
    # 躯干
    class Trunk(object):
             pass
    
    # 眼睛
    class   eye(object):
             pass
    
    # 组合就是 把小的功能组合成大的功能
    # 例如: 这里是 把人这大个类   分成几个小类   进行组合类  从而形成了人
    
    class Person:
        def __init__(self,name,id_a):
            self.name=name
            self.id_a=id_a
            self.head=Head()
            self.foot=Foot()
            self.trunk=Trunk()
            self.yes=eye()
    
    a1=Person("张三","18号")
    print(a1.__dict__)
    # 'name': '张三', 'id_a': '18号', 'head': <__main__.Head object at 0x000002730B4CACC0>, 'foot': <__main__.Foot object at 0x000002730B4CACF8>, 'trunk': <__main__.Trunk object at 0x000002730B4CAD30>, 'yes': <__main__.eye object at 0x000002730B4CAD68>}
    # 学校类
    class School(object):
          def __init__(self,name,addr):
            self.name=name
            self.addr=addr
          def zhao_sheng(self):
                print('%s 正在招生'%self.name)
    
     # 课程
    class Course(object):
        def __init__(self,name,price,period,school):
             self.name=name
             print(name)      #   英语
             self.price=price
             self.period=period
             self.school=school
             print(school.__dict__)   # {'name': '新东方', 'addr': '北京'}
             print(school.name)       #  新东方
    
    # 实例化学校
    a1=School("新东方","北京")
    a2=School("希望","上海")
    a3=School("万通","南京")
    
    # 实例化课程
    b1=Course("英语","200RMB","2小时",a1)
    
    print(b1)  # <__main__.Course object at 0x00000228B3413D30>
    # 学校类
    class School(object):
    
        def __init__(self ,name ,addr):
            self.name =name
            self.addr =addr
        def zhao_sheng(self):
            print('%s 正在招生 ' %self.name)
    
    # 课程
    class Course(object):
        def __init__(self ,name ,price ,period ,school):
            self.name =name
            self.price =price
            self.period =period
            self.school =school
    
    # 实例化学校
    a1 =School("新东方" ,"北京")
    a2 =School("希望" ,"上海")
    a3 =School("万通" ,"南京")
    
    menu ={
    
        '1' :a1,
        '2' :a2,
        '3' :a3
    }
    
    while  True:
        aa =input('选择学校>>:')
        bb =menu[aa]
        name =input('课程名>>:')
    
        price =input('课程费用>>:')
        period =input('课程名周期>>:')
    
        new_Course =Course(name ,price ,period ,bb)
        print('课程[%s]属于[%s]学校 ' %(new_Course.name ,new_Course.school.name))
    # 用low (列表) 比来解决关联组合方法
    
    
    
    
    # 学校类
    class School(object):
        def __init__(self ,name ,addr):
            self.name =name
            self.addr =addr
            self.course_list =[]
    
        def zhao_sheng(self):
            print('%s 正在招生 ' %self.name)
    
    
    # 课程
    class Course(object):
        def __init__(self ,name ,price ,period):
            self.name =name
            self.price =price
            self.period =period
    
    
    
    # 实例化学校
    a1 =School("新东方" ,"北京")
    a2 =School("希望" ,"上海")
    a3 =School("万通" ,"南京")
    
    # 实例化课程
    b1 =Course("英语" ,"200RMB" ,"2小时")
    b2 =Course("python" ,"1000RMB" ,"6小时")
    
    a1.course_list.append(b1)
    a1.course_list.append(b2)
    
    # print(a1.__dict__)                  # {'name': '新东方', 'addr': '北京', 'course_list': [<__main__.Course object at 0x0000025EC841ADA0>]}
    for  i in a1.course_list:
        print(i.name ,i.price)
    
    # 英语 200RMB
    # python 1000RMB
  • 相关阅读:
    三角形的最大周长
    Java 虚拟机运行时数据区详解
    四数相加 II
    Java 注解详解
    四因数
    【论文笔记+复现踩坑】End-to-end Recovery of Human Shape and Pose(CVPR 2018)
    假如 Web 当初不支持动态化
    保姆级干货分享
    C# ±180的值转成0-360
    C# 校验算法小结
  • 原文地址:https://www.cnblogs.com/Sup-to/p/10884334.html
Copyright © 2020-2023  润新知