Python笔记——组合

所谓组合,就是把类的实例化放到新类里面,那就把旧类组合起来了,没有直线关系的几个类放在一起,不用去继承了。

在一个类中以另外一个类的对象作为数据属性,称为类的组合。

定义一个类,叫水池,有乌龟和鱼

class Trutle:
    def __init__(self,x):  #初始化
        self.num = x

class Fish:
    def __init__(self,x):
        self.num = x

class Pool:
    def __init__(self,x,y):
        #把需要的类实例化
        self.turtle = Trutle(x)
        self.fish = Fish(y)

    def print_num(self):
        print('水池里共有乌龟%d只,小鱼%d只'%(self.turtle.num,self.fish.num))

执行输出:
在这里插入图片描述

弹幕笔记:

  1. Pool.__init __里构造了Turtle和Fish的对象并分别赋给变量self.turtle和self.fish,同时用x,y给两个对象内各自的num成员赋初值
  2. .num的意思是实例对象的实例对象

组合与继承?

在这里插入图片描述

课后题

  1. 在一个类中定义一个变量,用于跟踪该类有多少个实例被创建(当实例化一个对象,变量+1,当销毁一个对象,变量-1)
class Check:

    count = 0

    def __init__(self):
        Check.count+=1

    def __del__(self):
        Check.count-=1

在这里插入图片描述

  1. 定义一个栈(stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。
    isEmpty() 判断当前栈是否为空(返回True 或 False)
    push() 往栈的顶部压入一个数据项
    pop() 出栈
    top() 栈顶
    bottom( ) 栈底
##定义一个栈(stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。
class Stack:

    def __init__(self,start=[]):
        self.stack=[]
        for x in start:
            self.push(x)


    def isEmpty(self):
        return not self.stack

    def push(self,obj):
        self.stack.append(obj)

    def pop(self):
        if not self.stack:
            print('warning:stack is empty')

        else:
            return self.stack.pop()

    def top(self):
        if not self.stack:
            print('warning:stack is empty')
        else:
            return self.stack[-1]


    def buttom(self):
        if not self.stack:
            print('warning:stack is empty')
        else:
            return self.stack[0] 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值