Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义

简介: Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义

一、引言


面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和软件系统。在Python中,面向对象编程的核心概念是“类”和“对象”。类是创建对象的蓝图或模板,而对象则是根据类创建的实例。通过掌握类和对象的定义,我们可以更好地理解和应用面向对象编程的思想和方法。


二、类的定义


在Python中,我们使用class关键字来定义类。类的定义包括类名、类变量和类方法。下面是一个简单的类定义示例: image.png

在这个例子中,我们定义了一个名为Dog的类。它有一个类变量species,表示狗的物种,以及一个初始化方法__init__和两个实例方法bark

·

__init__方法是一个特殊的方法,当创建类的新实例时,Python会自动调用它。在这个方法中,我们接收两个参数nameage,并将它们分别赋值给实例变量self.nameself.ageself是一个对当前实例的引用,它允许我们访问实例的属性和方法。

·

·

bark方法是一个普通的实例方法,它打印出狗的名字并模拟狗的叫声。通过self参数,我们可以访问调用该方法的实例的name属性。

·


三、对象的创建和使用


定义了类之后,我们就可以根据这个类来创建对象。创建对象的过程叫做实例化,它使用类名作为构造器,并传入必要的参数来调用__init__方法。下面是如何创建Dog类的实例并使用它的示例:

image.png


在这个例子中,我们创建了一个名为my_dogDog类实例,并传入了"旺财"3作为参数。这些参数被传递给__init__方法,用于初始化实例变量nameage。然后,我们可以通过点操作符.来访问这些实例变量和调用实例方法。同时,我们也可以通过实例访问类变量species


四、类的属性和方法的访问控制


在面向对象编程中,我们经常需要控制对类的属性和方法的访问权限。Python通过约定俗成的命名方式来提供一定程度的访问控制,而不是像一些其他语言那样使用关键字来明确指定访问级别。


公有属性和方法:如果属性和方法的名称没有以下划线开头或结尾,那么它们就是公有的,可以从类的外部访问。


受保护的属性和方法:如果一个属性的名称以一个下划线开头,那么它被认为是受保护的,意味着它应该仅在类的内部或其子类中使用,而不应从类的外部直接访问。


私有属性和方法:如果一个属性的名称以两个下划线开头但没有以两个下划线结尾,那么它被认为是私有的。Python会对其名称进行修饰(mangling),使得它不能在类的外部直接访问。然而,这并不意味着它完全不可访问,只是增加了访问的复杂性。


下面是一个展示访问控制的例子:


image.png


相关文章
|
23天前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
5天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
14天前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
5天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
25天前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
25天前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。
|
23天前
|
存储 安全 索引
Python学习的自我理解和想法(8)
这是我在B站千锋教育学习Python的第8天,主要内容是元组。元组是一种不可变的序列数据类型,用于存储一组有序的元素。本文介绍了元组的基本操作,包括创建、访问、合并、切片、遍历等,并总结了元组的主要特点,如不可变性、有序性和可作为字典的键。由于开学时间紧张,内容较为简略,望见谅。
|
3月前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
46 0
|
7月前
|
存储 Python Windows
【Python学习篇】Python实验小练习——函数(十)
【Python学习篇】Python实验小练习——函数(十)
45 1
|
7月前
|
存储 Python
【Python学习篇】Python——函数(九)
【Python学习篇】Python——函数(九)
72 1