网站建设储蓄卡,海南省建设监理协会网站,网站推广都有哪些,链接点击量软件Python 面向对象编程基础
面向对象编程#xff08;OOP#xff09;是现代编程语言中的一种重要编程范式#xff0c;它通过类和对象来组织代码#xff0c;提高代码的可重用性和可维护性。Python是完全支持面向对象编程的语言#xff0c;它通过类和对象来帮助程序员设计更加…Python 面向对象编程基础
面向对象编程OOP是现代编程语言中的一种重要编程范式它通过类和对象来组织代码提高代码的可重用性和可维护性。Python是完全支持面向对象编程的语言它通过类和对象来帮助程序员设计更加模块化和可扩展的代码。
可以理解为你正在设计一个动物园。你不仅仅是列出动物的名字、年龄、体重等信息还要给它们设定它们的行为比如吃饭、走路、叫声等等。面向对象编程就像是你把每个动物视为一个独立的实体而这个实体有自己的数据和行为互相独立但又可以互动
可通过此图增加印象
为什么要学习面向对象
学习面向对象编程的原因如下
提高代码重用性面向对象可以通过继承和多态等机制避免重复编写相似的代码。通过设计合理的类和方法程序员可以轻松重用已有的代码而不必每次都从头开始。增强代码可维护性面向对象通过将数据和方法封装到类中减少了程序各部分之间的依赖方便修改和扩展。即使项目不断增加功能修改也会更加集中和有条理。更好的代码组织结构当项目规模增大时面向对象能够将复杂的系统拆解为更小、更易管理的模块每个类负责自己的功能简化了开发过程。更贴近现实世界的建模方式面向对象编程通过类和对象的概念可以模拟现实世界中的事物和关系让开发者可以更加自然地描述问题并解决问题。
面向对象编程中的三个重要概念
1. 类的定义
类是面向对象编程中的核心概念之一它定义了对象的属性和行为。类是创建对象的模板通过定义类我们能够创建具有相同属性和方法的多个对象。
2. 什么是类Class
类就像是“动物”的设计图。在现实世界中不同的动物都有不同的特征和行为但它们都符合一个基本的模板比如都是动物。这个模板就是类它定义了动物的特征属性和行为方法。
类就像动物的设计蓝图比如你设计一份“狗”的蓝图决定了它有“名字”、“年龄”这些属性以及“吃饭”、“跑步”等行为。这个蓝图可以用来创建很多不同的狗对象。
3. 什么是对象Object
对象是类的实际体现是根据类的蓝图创建出来的“具体动物”。每一只狗对象都有自己的名字和年龄可以吃饭、跑步等。每个对象的属性可以不同但它们都遵循类定义的规则。 \
对象就是按照设计图制造的具体狗比如你按照“狗”的蓝图制造一只名叫“旺财”的狗它有自己的名字和年龄。你可以有很多只狗对象每只狗都是独立的个体但它们都符合蓝图。
4. 如何创建一个类
在Python中类就像我们为动物设计的蓝图。你通过 class 来定义这个蓝图。
创建类就像你画出一份狗的设计图你决定了狗的“属性”如名字、年龄和“行为”如吃饭、跑步。然后你可以用这个设计图来制造无数只不同的狗。
类名的命名规则
类名首字母大写多个单词之间采用驼峰原则实例名、模块名采用小写多个单词之间采用下划线隔开 创建类的语法
class 类名:类属性名1类属性值1 (可以参考变量)类属性名2类属性值2 (可以无限创建属性)def 类方法(参数): #可以参考函数#类方法代码#类方法2 可以定义多个方法def 类方法(参数): #可以参考函数#类方法代码#调用类
类名()#调用类下面的方法(可以理解为调用类下面的函数)
类名().方法名()示例代码
class Dog: #创建类为 Doglegs 4 # 类属性1def return_legs(self): # 实例方法print(f正常的狗都有{Dog.legs}条腿)def return_updata(self): # 实例方法print(f我家的旺柴有{Dog.legs}条腿)s1Dog() #创建了一个 Dog 类的实例。通过 s1我们可以访问 Dog 类的方法和属性
print(s1) #输出的是该对象的内存地址#调用了 Dog 类的实例方法通过 self 访问了类属性 legs并打印了相关信息
s1.return_legs()
s1.return_updata()输出示例
__main__.Dog object at 0x000001DF510A0160
正常的狗都有4条腿
我家的旺柴有4条腿解释 创建了一个名为Dog的类他的类属性有name和age,还创建了return_legs和return_updata方法都在方法里面调用类属性name并输出然后实例化Dog类以及调用类方法 __main__.Dog object at 0x000001DF510A0160 这是打印 s1 对象的默认输出表示对象的内存地址。它告诉你 s1 是一个 Dog 类的实例
PS改类属性 legs 后所有方法里面的 legs 属性值都会改变
如何理解 self
self 其实是方法内部的一个“指针”它指向调用该方法的实例对象。所以每个方法的第一个参数 self 都表示当前对象本身你可以把它看作是一个占位符具体名称并不重要通常使用 self 是约定俗成的做法。
为什么要加 self
引用当前实例 self 代表了当前对象本身。它使得你能够在类的方法内部访问和操作该对象的属性和其他方法。每个实例方法都必须有 self这样才能确保每个对象有自己的独立状态。
如果不加 self 会怎么样
如果你在实例方法中不加 selfPython 会报错。 这是因为方法定义时第一个参数必须是 self以告诉 Python 这个方法是绑定到对象实例上的 5.创建类的实例属性
他和类属性有什么区别
类属性类属性是属于整个类的所有实例共享该属性。它在类中定义所有实例对象都能访问。实例属性实例属性是通过 __init__ 方法创建的每个实例都有独立的属性值。__init__ 方法在实例化对象时自动调用用来初始化对象的状态
类属性与实例属性的比较
属性类型定义位置共享性初始化方式内存消耗适用场景类属性类体内定义所有实例共享直接在类体内定义内存节省适用于所有实例共享的数据如常量、默认配置实例属性__init__ 方法中定义每个实例独立拥有在 __init__ 方法中定义增加内存消耗适用于每个实例独特的数据如对象的状态
可以理解比喻为
属性类型比喻适用场景类属性狗的的腿和耳朵数量所有狗狗共享所有实例共享的数据比如常量、默认设置等。实例属性每个狗狗的名字、年龄(所有狗狗独立)每个实例需要独立数据和状态的场景比如个性化的对象数据。 实例属性可以理解为类属性只是独立还是共享的区别 创建实例属性语法
class 类名:# 类属性 可以理解为创建变量类属性名1 类属性值1类属性名2 类属性值2# 构造方法初始化方法def __init__(self, 参数1, 参数2):# 实例属性 可以理解为创建变量self.实例属性1 参数1self.实例属性2 参数2# 类方法1 可以理解为创建函数 但是这里是在类下面创建所以叫方法def 方法名1(self):# 类方法代码print(f方法1执行{self.实例属性1} 和 {self.实例属性2})# 类方法2def 方法名2(self):# 类方法代码print(方法2执行)# 创建类的实例对象
obj 类名(参数1, 参数2) # 传递必要的参数给构造方法# 调用类的方法
obj.方法1() # 调用方法1
obj.方法2() # 调用方法2
示例代码
class Dog:# 类属性所有狗狗共享的属性legs 4 # 正常狗狗的腿数都一样 四条腿def __init__(self, name, breed):# 实例属性每只狗独有的属性self.name name # 每只狗的名字self.breed breed # 每只狗的品种# 创建两只不同的狗对象
dog1 Dog(旺柴, 拉布拉多)
dog2 Dog(小白, 吉娃娃)# 访问类属性
print(dog1.legs) # 输出 4
print(dog2.legs) # 输出 4# 访问实例属性
print(dog1.name) # 输出 旺柴
print(dog2.name) # 输出 小白# 修改类属性
Dog.legs 3
print(dog1.legs) # 输出 3
print(dog2.legs) # 输出 3# 修改实例属性
dog1.name 大黄
print(dog1.name) # 输出 大黄
print(dog2.name) # 输出 小白
解释
类属性 (legs)
legs 4 # 正常狗狗的腿数都一样 四条腿所有的狗狗共享同样的腿数这里假设每只狗的腿数都是 4。类属性是所有对象共享的所以修改了类属性后所有对象都会受到影响。
实例属性 (name 和 breed) def __init__(self, name, breed):# 实例属性每只狗独有的属性self.name name # 每只狗的名字self.breed breed # 每只狗的品种
每只狗狗的名字和品种是独特的这些是通过 __init__ 方法在对象创建时传入并设置的。_init__ 方法在 Python 中被称为构造方法Constructor它是一个特殊的方法用于在创建对象时初始化对象的属性
类的实例化(创建狗狗对象)
dog1 Dog(旺柴, 拉布拉多)
dog2 Dog(小白, 吉娃娃)dog1 和 dog2 是两只不同的狗分别有不同的名字和品种。
访问类属性和实例属性
# 访问类属性
print(dog1.legs) # 输出 4
print(dog2.legs) # 输出 4#访问实例属性
print(dog1.name) # 输出 旺柴
print(dog2.name) # 输出 小白dog1.legs 和 dog2.legs 输出的是类属性 legs 的值默认是 4。dog1.name 和 dog2.name 输出的是每只狗的实例属性 name。
修改类属性和实例属性
# 修改实例属性
dog1.name 大黄
print(dog1.name) # 输出 大黄
print(dog2.name) # 输出 小白修改类属性 legs 后所有狗对象的 legs 属性都会改变。修改实例属性 dog1.name 后只有 dog1 的名字会改变dog2 的名字保持不变。
总结
本文以动物园管理为生动比喻系统讲解Python面向对象编程OOP核心概念包括类与对象的定义、类属性与实例属性的区别、self关键字的原理及实际应用场景。通过代码示例与类比教学帮助初学者快速掌握OOP的封装、继承思想提升代码复用性与可维护性为开发复杂项目奠定基础。