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()
结果如下: