当前位置: 首页 > news >正文

PYTHON从入门到实践9-类和实例

# 【1】面向对象编程
class Student(object):# 可以帮属性值绑定到对象上,self相当于JAVA的thisdef __init__(self, name, age):self.name = nameself.age = agedef speak(self):print(self.name, '说:老师好')if __name__ == '__main__':new_student1 = Student('球球', 20)new_student2 = Student('冷萌', 20)print(new_student1.name, new_student2.name)new_student1.speak()new_student2.speak()
# 【2】方法与属性,就是包含在类里的方法和变量。结合方法和属性才能更优雅的处理复杂逻辑!
# 【3】封装、继承、多态。JAVA很少用继承了,PYTHON应该也相同

面向对象编程(Object-Oriented Programming, OOP)是现代编程语言中最重要的编程范式之一。Python作为一门多范式语言,对面向对象编程提供了全面支持。本文将带你了解Python中面向对象编程的基础知识,并通过实例演示如何在实际开发中应用这些概念。

一、面向对象编程基础

面向对象编程的核心思想是将数据和操作数据的方法组织为"对象"的概念。在Python中,一切都是对象,包括数字、字符串、函数等。

让我们从一个简单的学生类开始:

python

复制

下载

class Student(object):# 初始化方法,相当于构造函数def __init__(self, name, age):self.name = name  # 将name属性绑定到对象上self.age = age    # 将age属性绑定到对象上def speak(self):print(self.name, '说:老师好')

在这个例子中:

  • class 关键字用于定义类

  • object 是所有类的基类

  • __init__ 是类的初始化方法,相当于其他语言中的构造函数

  • self 参数代表类的实例,相当于Java中的this

二、创建和使用对象

创建类的实例非常简单:

python

复制

下载

if __name__ == '__main__':new_student1 = Student('球球', 20)new_student2 = Student('冷萌', 20)print(new_student1.name, new_student2.name)  # 输出: 球球 冷萌new_student1.speak()  # 输出: 球球 说:老师好new_student2.speak()  # 输出: 冷萌 说:老师好

每个对象都有自己独立的状态(属性),但共享相同的行为(方法)。

三、面向对象的三大特性

1. 封装

封装是将数据和对数据的操作捆绑在一起,并隐藏内部实现细节的过程。在Python中,我们可以通过以下方式实现封装:

python

复制

下载

class Student:def __init__(self, name, age):self._name = name  # 单下划线表示受保护的属性self.__age = age    # 双下划线表示私有属性def get_age(self):return self.__agedef set_age(self, age):if age > 0:self.__age = ageelse:print("年龄必须大于0")

2. 继承

继承允许我们定义一个类,继承另一个类的属性和方法:

python

复制

下载

class CollegeStudent(Student):  # 继承Student类def __init__(self, name, age, major):super().__init__(name, age)  # 调用父类的__init__方法self.major = majordef speak(self):print(self._name, '说:教授好')  # 重写父类方法

3. 多态

多态指的是同一操作作用于不同的对象可以有不同的解释:

python

复制

下载

def introduce(person):person.speak()student = Student('张三', 20)
college_student = CollegeStudent('李四', 21, '计算机科学')introduce(student)        # 输出: 张三 说:老师好
introduce(college_student) # 输出: 李四 说:教授好

四、Python面向对象编程的最佳实践

  1. 避免过度使用继承:正如文章开头提到的,现代编程中很少使用深度继承。组合优于继承是更好的选择。

  2. 使用@property装饰器:Python提供了更优雅的属性访问方式

python

复制

下载

class Student:def __init__(self, name):self._name = name@propertydef name(self):return self._name@name.setterdef name(self, value):if not value:raise ValueError("姓名不能为空")self._name = value
  1. 类方法和静态方法:理解何时使用实例方法、类方法和静态方法

python

复制

下载

class Student:count = 0  # 类属性def __init__(self, name):self.name = nameStudent.count += 1@classmethoddef get_count(cls):return cls.count@staticmethoddef is_adult(age):return age >= 18

五、总结

面向对象编程是Python中组织和构建代码的强大工具。通过封装、继承和多态这三大特性,我们可以创建出结构良好、易于维护的代码。然而,在实际开发中,我们应该根据具体需求选择合适的编程范式,而不是盲目使用面向对象。

记住,Python的哲学是"简单优于复杂",在不需要复杂类层次结构的情况下,简单的函数和模块可能更适合你的需求。

希望本文能帮助你更好地理解Python中的面向对象编程!如果你有任何问题或建议,欢迎在评论区留言讨论。

相关文章:

  • LeetCode 第80题 删除有序数组中的重复项Ⅱ
  • Modbus 报文结构与 CRC 校验实战指南(二)
  • 学生宿舍智能控电技术的新发展和控制要求
  • 矩阵及矩阵快速幂
  • Kafka4.0初体验
  • [Linux入门] Linux LVM与磁盘配额入门指南
  • 项目目标不一致时,如何校准方向
  • watch、watchEffect和computed函数的区别
  • 【模型部署】如何在Linux中通过脚本文件部署模型
  • Prompt Depth Anything:以提示方式驱动的Depth Anything用于实现4K分辨率下的精确米制深度估计
  • RabbitMQ中,basicAck、basicNack和basicReject是三种核心的消息确认机制
  • 网络安全碎碎恋
  • Elasticsearch 集群升级实战指引—7.x 升级到 8.x
  • SRS流媒体服务器之本地测试rtc推流bug
  • 【HuggingFace】模型下载至本地访问
  • 【硬核数学】8. AI的“想象力”:概率深度学习与生成模型《从零构建机器学习、深度学习到LLM的数学认知》
  • 人工智能-基础篇-7-什么是大语言模型LLM(NLP重要分支、Transformer架构、预训练和微调等)
  • java:如何用 JDBC 连接 TDSQL 数据库
  • 【电路笔记 TMS320F28335DSP】TI SCI (增强型的UART) 点对点异步串行通信接口
  • 如何通过自动化减少重复性工作