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

Python教程(20)——python面向对象编程基本概念

面向对象

      • 类和对象
      • 初始化方法
      • 属性和方法
      • self关键字
      • 继承
      • 多态

面向对象(Object-oriented)是一种常用的程序设计思想,它以对象作为程序的基本单元,将数据和操作封装在一起,通过对象之间的交互来实现程序的功能。

在面向对象编程中,将问题抽象成对象,而对象可以拥有属性(数据)和方法(操作)。对象可以被看作是现实世界中的实体或概念,具有某种特定的状态和行为。通过封装、继承和多态等机制,可以实现代码的模块化、复用和灵活性。

上面的解释是非常的抽象,可能对于很多初学者来说,不是很好理解,但是没关系,后面学习过这章节之后,你就大概能理解了。,我们先来了解Python面向对象的一些基本概念,以便可以很好的掌握面向对象编程。

给出一段小代码,然后逐个来分析Python面向对象编程中的一些的基本概念。

class Person:def __init__(self, name, age):self.name = nameself.age = agedef say_hello(self):print(f"你好,我是{self.name},今年{self.age}岁。")person1 = Person("一点", 30)
person1.say_hello()  # 输出:你好,我是一点,今年30岁。
person2 = Person("Alittle", 40)
person2.say_hello()  # 输出:你好,我是Alittle,今年40岁。

在这里插入图片描述

类和对象

类(Class)是一种抽象的概念,用于定义具有相同属性和方法的对象的集合。对象(Object)是类的一个具体实例,通过类可以创建多个对象。
上面的例子我们创建一个Person类,然后person1是创建的具体的实例对象,可以创建多个,person1person2都是创建的对象。

初始化方法

初始化方法(Constructor)是类中一个特殊的方法,它在创建对象时自动调用。在初始化方法中,可以对对象的属性进行初始化。在Python中,初始化方法的名称为__init__
上面的__init__(self, name, age)也就是初始化方法,也可以称为构造函数,其中参数self不可省略。

属性和方法

属性(Attribute)是对象的特征或数据,方法(Method)是对象的行为或操作。对象的属性保存对象的状态,而方法定义了对象的行为。
上面例子的nameage就是定义的属性,say_hello就是定义的方法。更加具体的相关介绍后面会写。

self关键字

在类中定义方法时,方法的第一个参数必须是selfself表示对象本身,在方法内可以通过self访问对象的属性和方法。

继承

继承(Inheritance)是面向对象编程中的一个重要概念,它允许一个类从另一个类继承属性和方法。通过继承,子类可以重用父类的代码,并可以在子类中添加新的属性和方法。在Python中通过在类定的时候加括号的方式来实现继承class Student(Person)

class Student(Person):def __init__(self, name, age, school):super().__init__(name, age)  # 调用父类的初始化方法self.school = schooldef say_hello(self):super().say_hello()  # 调用父类的方法print(f"我在{self.school}上学。")student1 = Student("一点的女儿", 5, "幼儿园")
student1.say_hello()

这个例子输出:

你好,我是一点的女儿,今年5岁。
我在幼儿园上学。

多态

多态(Polymorphism)是指一个对象可以引用不同类的实例,从而实现不同类的方法可以具有相同的行为。这可以通过继承和方法重写来实现。

class Animal:def make_sound(self):passclass Dog(Animal):def make_sound(self):print("汪汪汪!")class Cat(Animal):def make_sound(self):print("喵喵喵!")def make_animal_sound(animal):animal.make_sound()dog = Dog()
cat = Cat()
make_animal_sound(dog)  # 输出:汪汪汪!
make_animal_sound(cat)  # 输出:喵喵喵!

我们可以传入不同的对象(DogCat),但是函数 make_animal_sound 的调用方式却是一样的。
这种多态性使得我们可以编写更加灵活和可扩展的代码。当我们拓展程序中的新功能时,只需要创建新的派生类并重写相应的方法即可,而不用修改已有的代码。这大大降低了代码的耦合性,提高了代码的可维护性和可扩展性。

需要注意的是,面向对象编程不仅仅是这些基本概念的运用,还包括一些设计原则和模式等,用于指导和优化面向对象的软件开发。这些概念和原则一起构成了面向对象编程的完整体系。

**更多精彩内容,请关注同名公众:一点sir(alittle-sir)

http://www.lryc.cn/news/275068.html

相关文章:

  • C# Winform教程(一):MD5加密
  • Mongodb使用指定索引删除数据
  • 虾皮怎么选品:虾皮(Shopee)跨境电商业务成功的关键步骤
  • QML —— 使用Qt虚拟键盘示例(附完整源码)
  • Nacos 持久化及集群的搭建【微服务】
  • win10下vscode+cmake编译C代码操作详解
  • 网络安全红队常用的攻击方法及路径
  • 【基于openGauss2.1.0企业版安装X-Tuner参数调优工具】
  • SpringBoot+Vue轻松实现考试管理系统
  • 详解Keras:keras.preprocessing.image
  • 来瞅瞅Java 11都有啥新特性
  • Copilot在IDEA中的应用:提升编码效率的得力助手
  • 【Python】Excel不同sheet另存为不同CSV
  • 软件测试|深入学习 Docker Logs
  • 试除法求约数算法总结
  • [JavaWeb玩耍日记] 数据库
  • rime中州韵小狼毫 inputShow lua Translator 输入字符透传翻译器
  • 【RockChip | RV1126】学习与开发
  • copilot在pycharm的应用
  • HDU 2841:Visible Trees ← 容斥原理
  • 分布式数据之复制(Replication)
  • 【多线程】
  • 基于Vue开发的一个仿京东电商购物平台系统(附源码下载)
  • Nginx多ip部署多站点
  • Unity SVN更新提交小工具
  • 听GPT 讲Rust源代码--compiler(19)
  • redis单机部署
  • el-upload上传文件
  • 算法导论复习——CHP16 贪心算法
  • 【霹雳吧啦】手把手带你入门语义分割の番外12:U2-Net 源码讲解(PyTorch)—— 网络的搭建