python面向对象-类和对象
一. 类的定义
class 类名(): 代码
# 定义类 class Washer(): def wash(self): print("洗衣服")
注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯。
二. 创建对象
对象名 = 类名()
# 创建对象 w = Washer() # 调用方法 w.wash() # 洗衣服
三. self
self指的是调用该函数的对象。相当于java中的this
四. 给对象添加属性
1.在类外面添加属性
对象名.属性名 = 值
# 创建对象 w = Washer() # 添加和设置属性 w.width = 100 w.heigth = 500 # 获取属性的值 print(w.heigth) # 500 print(w.width) # 100
在类外面设置的属性可在类方法上通过self获取到:
# 定义类 class Washer(): def wash(self): print(self.height) # 500 # 创建对象 w = Washer() # 添加和设置属性 w.width = 100 w.height = 500 # 获取属性的值 print(w.height) # 500 print(w.width) # 100 w.wash()
五. 魔法方法
在Python中,`__xx__()`的函数(双下划线开头和结尾的函数)叫做魔法方法,指的是具有特殊功能的函数。
1. __init__() 初始化方法
1.1 __init__() 方法的作用
__init__()方法,在创建一个对象时默认被调用,不需要手动调用。`__init__(self)`中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。
# 定义类 class Washer(): def __init__(self): self.width = 100 self.height = 500 # 创建对象 w = Washer() # 获取属性的值 print(w.height) # 500 print(w.width) # 100
1.2 带参数的`__init__()`
`__init__()`可以传递参数,在创建对象时候传入,如 `__init__(self, width, height)`
# 定义类 class Washer(): def __init__(self, width, height): self.width = width self.height = height # 创建对象 w = Washer(100, 500) # 获取属性的值 print(w.height) # 500 print(w.width) # 100
说明
1. w = Washer(100, 500)中的100 和500 分别对应 __init__(self, width, height) 中的width 和height, 创建Washer对象时,自动调用__init__()并将这两个值传入完成对象初始化
2. 第一个参数默认为self,由解释器自动传入,创建对象时不传
3. 通过self在类中可以定义需要的属性, 如self.width = width 即是定义了一个width属性
2 __str__() 方法
当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了`__str__`方法,那么就会打印从在这个方法中 return 的数据。
# 定义类 class Washer(): def __init__(self, width, height): self.width = width self.height = height def __str__(self): return f"这是一台洗衣机。。。长{self.height}, 宽{self.width}" # 创建对象 w = Washer(100, 500) print(w) # 这是一台洗衣机。。。长500, 宽100
3 __del__() 方法的作用
当删除对象时,python解释器会默认调用`__del__()`方法。
# 定义类 class Washer(): def __init__(self, width, height): self.width = width self.height = height def __del__(self): print("这台洗衣机要被删除了") #删除对象时执行 # 创建对象 w = Washer(100, 500) # 删除对象 del w # 这台洗衣机要被删除了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构