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


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

    一、理解面向对象

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

    二、类和对象

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

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

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

    #定义类
    class 类名():
    	代码
    
    #创建对象
    对象名 = 类名()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    #需求:洗衣机 功能:能洗衣服
    #1,定义洗衣机类
    class Washer():
    	def wash(self):  #函数--实现功能
    		print('能洗衣服')
    
    #2,创建对象
    haier = Washer()
    
    #3,验证成果
    #打印haier
    haier = Washer()
    
    #使用wash功能 --实例方法、对象方法 -- 对象名.wash()
    haier.wash() #成功调用wash函数,输出:能洗衣服
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

    class Washer():
    	def wash(self):  #函数--实现功能
    		print('能洗衣服')
    		print(self)  #需要先创建对象调用一下
    
    haier = Washer()
    print(haier)   #打印haier与打印self输出的内容一样
    haier.wash() #需要调用,才能运行到print(self)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    #目标:1,一个类是否可以创建多个对象  2,多个对象都调用函数时,self是否都相同
    class Washer():
    	def wash(self):  #函数--实现功能
    		print('能洗衣服')
    		print(self)
    haier1 = Washer()
    haier1.wash()
    
    haier1 = Washer()
    haier1.wash() #打印出的self是不一样的
    #一个类可以创建多个对象;对象不同调用函数后 的self也不同
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    三、添加和获取对象属性

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

    类外面添加对象属性

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

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

    对象名.属性名
    haier1.width

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

    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() #可以成功打印高度,宽度
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    四、魔法方法

    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() #成功输出
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意:

    • __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() #成功输出
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    str()

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

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

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

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

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

  • 相关阅读:
    windows-连接到同一网络的2台电脑共享文件
    Windows安装cuda和cudnn教程最新版(2023年9月)
    Python中的pop()方法:删除和提取列表元素的利器
    阿里P8MySQL,基础/索引/锁/日志/调优都不误,一锅深扒端给你
    【初赛题解】CSP-J 2022 入门级 第一轮 第16题
    uniapp——uniapp如何打包成安卓——自有证书
    【直播精彩回顾】Redis企业级数据库及欺诈检测方案!
    精灵球Plus相关链接
    OpenJudge NOI 2.1 2673:比赛排名
    如何定义set的比较函数?
  • 原文地址:https://blog.csdn.net/Sun123234/article/details/127559236