Python 开发之语法基础篇3:组合

在这里插入图片描述

一、前言

python除了可以用继承之外,还支持组合机制,可以让用户将一个或多个类关联在一起,继承一般是包含或者从属关系,而组合一般是类与类之间有显著不同(我把它理解为平等关系),几个彼此不相关联的类组合成一个新的类。
如:定义花、树、猫、人这几个类组合成一个公园,并通过公园的类来对花、树、猫、人的类的属性进行访问。

二、创建类和类的组合

代码如下


class Flowers:
    def __init__(self,name,color):
        self.name = name
        self.color = color

class Tree:
    def __init__(self,name):
        self.name = name

class Cat:
    def __init__(self,name,number):
        self.name = name
        self.number = number

class People:
    def __init__(self,name,sex):
        self.name = name
        self.sex = sex

class Park:
    def __init__(self,flowers_name,flowers_color,tree_name,cat_name,cat_number,people_name,people_sex):
        self.flowers = Flowers(flowers_name,flowers_color)
        self.tree = Tree(tree_name)
        self.cat = Cat(cat_name,cat_number)
        self.people = People(people_name,people_sex)

    def print_msg(self):
        print("公园里有名为%s的花,颜色是%s,有名为%s的树,有%s品种的猫%d只,有人类%s,名字叫做%s"
         %(self.flowers.name,self.flowers.color,self.tree.name,self.cat.name,self.cat.number,self.people.name,self.people.sex))

a = Park("樱花","白色","樟树","中华田园猫",2,"男性","Tom")
a.print_msg()

运行:
在这里插入图片描述
其实总结就是:把需要的类放进去实例化,就叫“组合”。

我们再看一段关于类组合的代码:

代码如下:


class Flowers:
    def __init__(self,name):
        self.name = name

class Tree:
    def __init__(self,name,color,flowers):
        self.name = name
        self.flowers = flowers

class Park:
    def __init__(self,name,location,tree):
        self.name = name
        self.location = location
        self.tree = tree

f = Flowers("樱花")

t = Tree("樟树","绿色",f)

p = Park("顾村公园","上海市宝山区",t)


print("位于[%s]的[%s]里面的[%s]开了,简直美极了!" %(p.location,p.name,p.tree.flowers.name))

运行:
在这里插入图片描述

三、结语

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)。

获取资料:微信扫描下方二维码,关注公众号:一个物联网项目的前世今生。

静晨出品:静之所想,晨之所计
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值