【python 第七篇章】类

news/2024/10/21 6:26:04/

在Python中,类(Class)是一种用于定义对象(Object)的蓝图或模板。通过类,我们可以创建具有相同属性和方法的对象。Python的类提供了面向对象编程(OOP)的所有基本功能:封装、继承和多态。

一、定义类

在Python中,定义类使用class关键字后跟类名和一个冒号。类的主体(即类的属性和方法)通过缩进来定义。

python">class MyClass:# 类的属性(通常定义在__init__方法中)def __init__(self, name, age):self.name = name  # 实例变量self.age = age# 类的方法def greet(self):print(f"Hello, my name is {self.name} and I am {self.age} years old.")

在这个例子中,MyClass是一个类名,__init__是一个特殊的方法,称为类的构造函数或初始化方法。当创建类的新实例时,__init__方法会自动被调用。self代表类的实例本身,通过它我们可以访问类的变量和方法。nameage是传递给__init__方法的参数,它们被赋值给实例变量self.nameself.age

二、创建类的实例

要创建类的实例(即对象),我们使用类名后跟一对圆括号,并在括号内传递任何必要的参数给__init__方法。

python">obj1 = MyClass("Alice", 30)
obj2 = MyClass("Bob", 25)

三、访问实例的属性和方法

通过点(.)操作符,我们可以访问对象的属性和方法。

python">obj1.greet()  # 输出: Hello, my name is Alice and I am 30 years old.
print(obj2.name)  # 输出: Bob
obj2.age = 26  # 修改实例的age属性
print(obj2.age)  # 输出: 26

四、类的其他特殊方法

Python的类还有一些其他的特殊方法(也称为“魔术方法”或“双下方法”),它们在特定情况下自动被调用。例如:

  • __str__(self): 定义对象的字符串表示形式,当你尝试将对象转换为字符串(如使用print()函数)时会被调用。
  • __repr__(self): 定义对象的“官方”字符串表示形式,主要用于调试。
  • __add__(self, other): 定义对象加法的行为。

五、类的继承

Python支持继承,即允许我们定义一个类(子类)来继承另一个类(父类)的属性和方法。

python">class Employee(MyClass):def __init__(self, name, age, employee_id):super().__init__(name, age)  # 调用父类的__init__方法self.employee_id = employee_iddef display_info(self):print(f"Name: {self.name}, Age: {self.age}, Employee ID: {self.employee_id}")emp = Employee("Charlie", 35, 12345)
emp.display_info()  # 输出: Name: Charlie, Age: 35, Employee ID: 12345

在这个例子中,Employee类继承了MyClass类,并添加了一个新的实例变量employee_id和一个新的方法display_info()super().__init__(name, age)用于调用父类的__init__方法,以确保父类的初始化逻辑也被执行。


http://www.ppmy.cn/news/1519478.html

相关文章

SpringBatch4升级SpringBatch5踩坑指南

SpringBatch5使用JDK17作为基线版本&#xff0c;若项目未升级&#xff0c;亦无需升级springbatch。 报错1:JobParameter类型问题 报错内容&#xff1a; java.util.Map.Entry<java.lang.String,org.springframework.batch.core.JobParameter<?>>无法转换为java.u…

RabbitMQ 常见问题与故障排查

目录 前言 常见错误与解决方案 1. 连接失败 2. 队列阻塞 3. 消息丢失 4. 消费者不消费 5. 资源耗尽 日志分析 1. 配置 RabbitMQ 日志 2.日志文件位置 3. 日志分析工具 4. 分析日志文件 5. 常见日志问题及解决方案 Docker中日志分析 1. 查看 RabbitMQ 日志 2. 获…

elasticsearch安装在服务器并进行向量检索

服务器安装elasticsearch 安装Elasticsearch的步骤通常包括以下几个阶段&#xff1a; 导入Elasticsearch公钥。 创建Elasticsearch仓库。 安装Elasticsearch。 启动Elasticsearch服务。 配置Elasticsearch开机自启。 以下是针对基于Debian/Ubuntu系统的安装示例&#xf…

OpenCV绘图函数(6)绘制椭圆函数ellipse()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 画出一个简单的或粗的椭圆弧或者填充一个椭圆扇形。 函数 cv::ellipse 使用更多的参数可以画出椭圆轮廓、填充的椭圆、椭圆弧或填充的椭圆扇形。…

SQL慢查询优化方式

目录 一、SQL语句优化 1.避免使用 SELECT * &#xff0c;而是具体字段 2.避免使用 % 开头的 LIKE 的查询 3.避免使用子查询&#xff0c;使用JOIN 4.使用EXISTS代替IN 5.使用LIMIT 1优化查询 6.使用批量插入、优化INSERT操作 7.其他方式 二、SQL索引优化 1.在查询条件…

python:浅谈yolov10对比yolov5的方便之处

文章目录 前言一、环境配置二、数据标注三、配置文件四、训练数据五、数据预测总结 前言 ‌YOLOv10‌是YOLO系列的最新版本&#xff0c;旨在提高推理速度并减少计算开销。它是实时目标检测领域中的一项重要进展&#xff0c;通过移除非最大值抑制(NMS)并采用双重标签分配、空间…

Cesium 台湾省白膜数据渲染

Cesium 台湾省白膜数据渲染 效果图

一份详细的EdgeOne安全配置指南与教程

前言 腾讯云EdgeOne&#xff0c;作为一款集成CDN加速和全方位安全防护于一体的产品&#xff0c;不仅可以确保用户访问的流畅与快速响应&#xff0c;还能有效抵御DDoS攻击、WEB攻击等网络攻击&#xff0c;本文就以上功能详细介绍如何配置及应用&#xff0c;希望可以让大家直观感…