python类的组合

类的组合,即在类实例化时,将另一个类的实例作为参数传入,这样可以将两个实例关联起来。

当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。

例如,描述一个机器人类,这个大类是由很多互不相关的小类组成,如机械胳膊类、腿类、电池类等。

当类之间有很多相同的属性,提取这些统统的属性做成基类,用继承比较好。

class course:
    def __init__(self,name,price,period,teacher):
        self.name=name
        self.price=price
        self.period=period
        self.teacher=teacher
class teacher:
    def __init__(self,name,sex):
        self.name=name
        self.sex=sex
class student:
    def __init__(self,name,age,course):
        self.name=name
        self.age=age
        self.course=course
t1=teacher(‘Bob‘,38)
t2=teacher(‘Jack‘,45)
t3=teacher(‘Jane‘,45)
c1=course(‘python‘,6000,‘3 months‘,t2)#将teacher作为参数传递给课程实例
c2=course(‘linux‘,7000,‘5 months‘,t1)
c3=course(‘mysql‘,6500,‘5 months‘,t3)
d={‘1‘:c1,‘2‘:c2,‘3‘:c3}
name=‘Alice‘
age=21
while True:
    choice=input(‘please choice course:‘)
    if choice in d.keys():
        s1=student(name,age,d[choice])#将课程实例作为参数传递给学生实例
        print(s1.__dict__)
        print(‘%s choose course %s,%s is the teacher‘%(s1.name,s1.course.name,s1.course.teacher.name))
    elif int(choice)==0:
        exit(0)
    else:
        print(‘please input correct choice‘)

原文地址:https://www.cnblogs.com/Forever77/p/10090242.html

时间: 2024-08-30 15:23:29

python类的组合的相关文章

Python类的组合时产生的属性同步改变问题

问题引入: class A: x = 1 class B: t = A() b1 = B() b2 = B() b1.t.x = 2 print(b2.t.x) >>> 2 为什么操作对象b1 会改变另一个对象 b2 的属性值?对象之间的属性应该相互独立?难道类的对象属性和列表一样是一种可变属性,操作对象属性会改变类属性,从而改变了另一个该类实例中的属性? print(A.x)>>> 1 发现类属性并没有被改变 查阅多方资料后,发现这种情况和实例的创建规则有关 clas

Python学习之旅—面向对象进阶知识:类的命名空间,类的组合与继承

前言 上篇博客笔者带领大家初步梳理了Python面向对象的基础知识,本篇博客将专注于解决三个知识点:类的命名空间,类的组合以及面向对象的三大特性之一继承,一起跟随笔者老看看今天的内容吧. 1.类的命名空间 在上一篇博客中,我们提到过对象可以动态添加属性,一起来回忆下昨天的知识点,看如下的代码: class A: pass a = A() a.name = 'alex' print(a.name) 这里我们手动为a对象添加了一个属性name,然后直接打印可以得到a对象的名称.通过这个例子,我们可以

python 类组合

在使用一款云产品的python sdk过程中,发现了python类之间调用的另一种少见方法:类组合,那么类组合是用来干吗的呢? 我们知道,在python中,类之间的相互调用,我们习惯性的采用继承的方法,但是 除了继承方法,我们还可以采用类组合的方式来调用另一个类 官方的说法:让不同的类混合并加入到其他类中,来增强功能和代码重用性.你可以在一个大点的类中创建你自己的类的实例,实现一些其他属性和方法来增强原来的类对象. 举个例子: >>> class Name(object):       

python类与对象的组合与继承

1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承用于"是一个"的场景中.例如,水池里有一个乌龟,天上有一个鸟,地上有一个小甲鱼,这些适合使用组合.青瓜是瓜,女人是人,鲨鱼是鱼,这些就应该使用继承啦实例如下: class Turtle: def __init__(self,x): self.num = x class Fish: def

day31 类的组合及继承,文件目录规范

Python之路,Day18 = Python基础18-面向对象继承与组合 类的继承 1 def talk(): 2 print("I am come from talk..a") 3 4 class Animal: 5 def say(self): 6 print("say") 7 8 class Person(object): 9 def __init__(self, name, age): 10 self.name = name 11 self.age = a

Day18:类的抽象、类的组合应用

一.抽象类 1.什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化. 2.为什么要有抽象类 如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性. 比如我们有香蕉的类,有苹果的类,有桃子的类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉,要么是吃一个具体的桃子......你永远无法吃到一个叫做水果的东西. 从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽

Day30:类的抽象、类的组合应用

一.抽象类 1.什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化. 2.为什么要有抽象类 如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性. 比如我们有香蕉的类,有苹果的类,有桃子的类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉,要么是吃一个具体的桃子......你永远无法吃到一个叫做水果的东西. 从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽

python类的使用

目标: 1.父类,子类定义,以及子类调用父类 2.类的组合使用 3.内置功能 1)父类.子类以及调用父类 脚本内容如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # 父类 class AddBook(object): def __init__(self, name, phone): self.name = name self.phone = phone def get_phone(self): return self.phone # 子类,继承

python3 类的组合使用

1.组合的定义 软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合. class Weapon: def prick(self,obj): # 这是该装备的主动技能,扎死对方 obj -= 500 # 假设攻击力是500 print(obj) class Person: # 定义一个人类 role = 'person' # 人的角色属性都是人 def __init__(self, name): self.name = na