面向对象2

del 方法

对象在内存中被释放时,会执行这个方法 一般是程序结束时或者主动调用del删除时
对象的引用计数为0的时候 才会释放

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

    def __del__(self):
        print(('------del------', self.name))
        print('111')


student = Student('a')
student1 = Student('bbb')
# 代码删除 执行del
del student
print(222)

结果如下:
在这里插入图片描述

烤地瓜

 ```python
# cookedLevel : 这是数字;0~3表示还是生的,超过3表示半生不熟,超过5表示已经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始时时生的
# cookedString : 这是字符串;描述地瓜的生熟程度
# condiments : 这是地瓜的配料列表,比如番茄酱、芥末酱等

# cook() : 把地瓜烤一段时间
# addCondiments() : 给地瓜添加配料
# __init__() : 设置默认的属性
# __str__() : 让print的结果看起来更好一些


class SweetPotato:
    # 初始化
    def __init__(self):
        # 生熟级别
        self.cookedLevel = 0
        # 生熟的描述
        self.cookedString = '生的'
        # 配料的列表
        self.condiments = []

    # 烤地瓜
    def cook(self, time):
        """烤地瓜 time 传入烤的时间 """
        self.cookedLevel += time
        # 判断烤地瓜的时间是否大于八分钟
        if self.cookedLevel > 8:
            self.cookedString = '烤成木炭了'
        # 判断烤地瓜的时间是否大于五分钟
        elif self.cookedLevel > 5:
            self.cookedString = '已经烤好啦'
        # 判断烤地瓜的时间是否大于三分钟
        elif self.cookedLevel > 3:
            self.cookedString = '半生不熟'
        # 否则
        else:
            self.cookedString = '生的'

    # 添加作料
    def condiment(self, condiment):
        self.condiments.append(condiment)

    def __str__(self):
        msg = ''
        for item in self.condiments:
            msg += item + ','
        msg = msg[:-1]
        return '当前地瓜是%s, 添加作料有%s' % (self.cookedString, msg)


# 创建对象
potato = SweetPotato()
potato.cook(6)
potato.condiment('孜然')
print(potato)
potato.cook(4)
potato.condiment('番茄')
print(potato)


结果如下:
在这里插入图片描述

给房子添加家具

给房子里添加家具(比如床)
要求
1.房子有自己的地理位置和面积
2.家具有自己的名字和面积
3.可以添加很多家具,但是不能超出房子面积

class Home:
    def __init__(self, place, area):
        # 房子的地理位置
        self.place = place
        # 房子的面积
        self.area = area
        # 存放家具
        self.items = []

    def add(self, furniture):
        # 判断房间面积是否大于家具面积
        if self.area > furniture.area:
            # 房间面积减去添加的家具面积
            self.area -= furniture.area
            # 在房间里添加家具
            self.items.append(furniture)
        else:
            print('装不下了 %s' % furniture.name)

    def __str__(self):
        # 创建一个空字符
        mgs = ''
        # 遍历房间里添加的家具
        for item in self.items:
            mgs += (item.name + '  ')
        return '当前剩余面积%s, 家具有%s' % (self.area, mgs)


class Furniture:
    def __init__(self, name, area):
        # 家具的名字
        self.name = name
        # 家具占用的面积
        self.area = area


# 创建对象
home = Home('神之领域', 200)
furniture1 = Furniture('冰箱', 40)
furniture2 = Furniture('桌子', 40)
furniture3 = Furniture('床', 60)
furniture4 = Furniture('电视', 20)
furniture5 = Furniture('空调', 50)
# 添加家具
home.add(furniture1)
home.add(furniture2)
home.add(furniture3)
home.add(furniture4)
home.add(furniture5)
# 打印结果
print(home)

结果如下:
在这里插入图片描述

私有属性

外面的对象无法直接调用私有属性 所以一般会给私有属性添加get set方法

class Animal:
    def __init__(self):
        # 在属性前加两个下划线,就变成了私有属性 ,外面的对象无法直接调用
        # 在类里面 可以用self调用
        self.__age = 5

    def get_age(self):
        print(self.__age)


# 私有属性 本质 就是修改了名字   _类名私有属性名    _Animal__age

dog = Animal()

print(dog._Animal__age)
dog._Animal__age = 20
print(dog._Animal__age)

dog.get_age()

结果如下:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值