21、面向对象
面向对象
类和对象
-
面向过程和面向对象的编程
- 面向过程的编程:函数式编程,C程序等
- 面向对象的编程:C++,Java,Python等
-
类和对象:是面向对象中的两个重要概念
- 类:是对事物的抽象,比如:汽车模型
- 对象:是类的一个实例,比如:QQ轿车,大客车
-
范例说明
- 汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化一台真实的汽车实体出来
Python类定义
-
Python类的定义
- 使用class关键字定义一个类,并且类名的首字母要大写
- 当程序员需要创建的类型不能用简单类型表示时就需要创建类
- 类把需要的变量和函数组合在一起,这种包含也称之为“封装”
-
Python类的结构
class 类名: 成员变量 成员函数 class MyClass(): first = 123 def fun(self): print "I am function"
-
对象的创建
- 创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。
-
句柄用于区分不同的对象
-
对象的属性和方法与类中的成员变量和成员函数对应
if __name__ == "__main__": myClass = MyClass() #创建类的一个实例
-
- 创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。
-
构造函数__init__
class Person: def __init__(self, name, lang, website): self.name = name self.lang = lang self.website = website
-
self是一个很神奇的参数
- self指向类的一个实例,当实例调用方法时,self就指向这个调用的方法的实例
-
子类、父类和继承
# 抽象形状类 class Shape: # 类的属性 edge = 0 # 构造函数 def __init__(self, edge): self.edge = edge # 类的方法 def getEdge(self): return self.edge # 抽象方法 def getArea(self): pass #三角形类,继承抽象形状类 class Triangle(Shape): width = 0 height = 0 # 构造函数 def __init__(self, width, height): #调用父类构造函数 Shape.__init__(self, 3) self.width = width self.height = height #重写方法 def getArea(self): return self.width * self.height / 2 #四边形类,继承抽象形状类 class Rectangle(Shape): width = 0 height = 0 # 构造函数 def __init__(self, width, height): #调用父类构造函数 Shape.__init__(self, 4) self.width = width self.height = height #重写方法 def getArea(self): return self.width * self.height triangle = Triangle(4,5); print triangle.getEdge() print triangle.getArea() rectangle = Rectangle(4,5); print rectangle.getEdge() print rectangle.getArea()
-
python支持多继承,但不推荐使用
【推荐】国内首个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应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2012-01-01 工欲善其事,必先利其器.--转载
2012-01-01 每个项目最重要的十件事 --转载
2012-01-01 11 款用于优化、分析源代码的Java工具 --转载