python面向对象1--类、对象、属性、魔法方法

python面向对象1–类、对象、属性、魔法方法
python面向对象2–综合案例:烤地瓜、搬家具、单继承、多继承
python面向对象3-多层继承、super()、私有权限、多态、类属性实例属性、类方法和静态方法

一、理解面向对象

面向对象是一种抽象化的编程思想
洗衣服
面向过程:手洗
面向对象:机洗,洗衣机洗

二、类和对象

洗衣机是一个事物,即对象
两个重要组成部分:类和对象
用类创建对象,类实例化对象
图纸–>洗衣机–>洗衣服

定义:类是对一系列具有相同特征和行为的事物的统称,是一个抽象概论。
特征–属性,行为—方法
洗衣机功能–函数
图纸—类
洗衣机–对象

在开发中,先有类再有对象(先有图纸,再有洗衣机)

#定义类
class 类名():
	代码

#创建对象
对象名 = 类名()
#需求:洗衣机 功能:能洗衣服
#1,定义洗衣机类
class Washer():
	def wash(self):  #函数--实现功能
		print('能洗衣服')

#2,创建对象
haier = Washer()

#3,验证成果
#打印haier
haier = Washer()

#使用wash功能 --实例方法、对象方法 -- 对象名.wash()
haier.wash() #成功调用wash函数,输出:能洗衣服

self指调用该函数的对象,例如haier

class Washer():
	def wash(self):  #函数--实现功能
		print('能洗衣服')
		print(self)  #需要先创建对象调用一下

haier = Washer()
print(haier)   #打印haier与打印self输出的内容一样
haier.wash() #需要调用,才能运行到print(self)
#目标:1,一个类是否可以创建多个对象  2,多个对象都调用函数时,self是否都相同
class Washer():
	def wash(self):  #函数--实现功能
		print('能洗衣服')
		print(self)
haier1 = Washer()
haier1.wash()

haier1 = Washer()
haier1.wash() #打印出的self是不一样的
#一个类可以创建多个对象;对象不同调用函数后 的self也不同

三、添加和获取对象属性

属性即对象的特征,比如:洗衣机的宽度,高度,重量
对象属性可以在类外面 and 类里面 添加和获取

类外面添加对象属性

对象名.属性名 = 值
例如:haier1.width = 500

class Washer():
	def wash(self):  #函数--实现功能
		print('能洗衣服')
		print(self)
haier1 = Washer()
#添加属性
haier1.width = 500
haier1.height = 500
类外面获取对象属性

对象名.属性名
haier1.width

class Washer():
	def wash(self):  #函数--实现功能
		print('能洗衣服')
		print(self)
haier1 = Washer()
#添加属性
haier1.width = 500
haier1.height = 500
#获取属性
print(f'洗衣机的宽度是{haier1.width}')
类里面获取对象属性

self.属性名

class Washer():
	def wash(self):  #函数--实现功能
		print('能洗衣服')
	
	#获取实例属性
	def print_info(self):
		print(self.width)
		print(f'洗衣机的高度是{self.height}')

haier1 = Washer()
#添加属性
haier1.width = 500
haier1.height = 500

#对象词用实例方法
haier1.print_info() #可以成功打印高度,宽度

四、魔法方法

xx()

xx() 的函数叫做魔法方法,指具有特殊功能的函数

xx()
xx()方法的作用:初始化对象
洗衣机的宽度高度,应该在生成前就确定了,即在类中确定

class Washer():
	def __init__(self):  #函数--实现功能
		self.width =500
		self.height = 800
	
	#获取实例属性
	def print_info(self):
		print(self.width)
		print(f'洗衣机的高度是{self.height}')
haier = Washer()
haier.print_info() #成功输出

注意:

  • __init__方法创建对象时自动调用,不用再手动调用
  • init(self)中self也不需要手动传递,自动把创建的对象传递过去
带参数的__into__()

一个类可以创建多个对象,如何对不同的对象设置不同的初始化属性?
答:传参数

class Washer():
	def __init__(self,width,height):  #函数--实现功能
		self.width =width
		self.height = height
	
	#获取实例属性
	def print_info(self):
		print(self.width)
		print(f'洗衣机的高度是{self.height}')
haier1 = Washer(500,800) #创建对象时,传入参数
haier1.print_info() #成功输出

haier2 = Washer(10,20) #创建对象时,传入参数
haier2.print_info() #成功输出
str()

print()输出对象时,打印的是对象的内存地址。如果类中定义了__str__方法,那么打印出的内容会变成__str__里面return的内容

class Washer():
	def __init__(self):
		self.width = 500
	def __str__(self):
		return '解释说明:类的说明或者对象状态的说明'
haier = Washer()
print(haier) #输出:'解释说明:类的说明或者对象状态的说明'

####del()
当删除对象时,python解释器也会默认调用__del__方法

class Washer():
	def __init__(self):
		self.width = 500
	def __del__(self):
		print(f'{self}对象已经被删除')
haier = Washer()
#输出: <__main__ .Washer object at 0x000026118223278>对象已经被删除

魔法方法是程序自动就调用的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值