我在b站学python之基础学习十四:面向对象基础(魔法方法)

上一篇:我在b站学python之基础学习十三:文件操作续

前提:面向对象基础和java思想类似
一、魔法方法
在python中,xx()的函数叫做魔法方法,指的是具有特殊功能的函数。
1、init()
作用:初始化对象
例:

class Washer():
	def _init_(self):
		#添加实例属性
		self.width = 500
		self.height = 800
	
	def print_info(self):
		print(f'洗衣机的宽度是{self.width},高度是{self.height}')

haier = Washer()
haier.print_info()

注意:在创建一个对象时默认被调用,不需要手动。
init(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。

2、带参数的_init_()
例:

class Washer():
	def _init_(self,width,height):
		self.width = width
		self.height = height
	
	def print_info(self):
		print(f'洗衣机的宽度是{self.width},高度是{self.height}')

haier = Washer(10,20)
haier.print_info()

3、str()
作用:当使用print输出对象时候,默认打印对象的内存地址。如果类定义了_str_(),那么就会打印在这个方法中return的数据。
例:

class Washer():
	def _init_(self):
		self.width = 300
	
	def _str_(self):
		return '解释说明:类的说明或者对象状态的说明'

haier = Washer()
print(haier)

4、del()
作用:当删除对象时,python解释器也会默认调用_del_()方法
例:

class Washer():
	def _init_(self):
		self.width = 300
	
	def _str_(self):
		print('对象已经删除')

haier = Washer()

二、综合应用
1、烤地瓜

#定义类:初始化属性、被烤和添加调料的方法、显示对象信息的str
class SweetPotato():
	def _init_(self):
		#被烤的时间
		self.cook_time = 0
		#烤的状态
		self.cook_state = '生的'
		#调料列表
		self.condiments = []
	
	def cook(self,time):
		#计算地瓜整体烤过的时间
		self.cook_time += time
		#判断地瓜状态
		if 0 <=self.cook_time <3:
			self.cook_state = '生的'
		#生的
		elif 3 <= self.cook_time <5:
			self.cook_state = '半生不熟'
		#半生不熟
		elif 5 <= self.cook_time <8:
			self.cook_state = '熟了'
		#熟了
		elif self.cook_time >= 8:
			self.cook_state = '糊了'
	def add_condiments(self,condiment):
		self.condiments.append(condiment)
	def _str_(self):
		return f'这个地瓜被烤过时间是{self.cook_time},状态是{self.cook_state}'

#创建对象并调用对应实例方法
digua1 = SweetPotato()

print(digua1)

digua1.cook(2)
digua.add_condiments('辣椒面')
print(digua1)

digua1.cook(2)
digua.add_condiments('辣椒油')
print(digua1)


2、搬家具

class Funiture():
	def _init_(self,name,area):
		self.name = name
		self.area = area
	
class Home():
	def _init_(self,address,area):
		#地理位置
		self.address = address
		#房屋面积
		self.area = area
		#剩余列表
		self.free_area = area
		#家具列表
		self.funiture = []
		
	def _str_(self):
		return f'房子地理位置在{self.address},房屋面积是{self.area},剩余面积{self.free_area},家具有{self.funiture}'
	
	def add_funiture(self,item):
		if item.area <= self.free_area:
			self.funiture.append(item.name)
			self.free_area -= item.area
		else:
			print('家具太大,剩余面积不足,无法容纳')


bed = Funiture('双人床',6)
sofa = Funiture('沙发',10)

jia1 = Home('北京',1000)
print(jia1)

jia1.add_funiture(bed)
print(jia1)

ball = Funiture('篮球场',2000)
jia1.add_funiture(ball)
print(jia1)

下一篇:我在b站学python之基础学习十五:继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值