首页 > 编程语言 >Python教程(20)——python面向对象编程基本概念

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

时间:2024-01-07 10:00:24浏览次数:35  
标签:__ sound 20 Python self 对象 面向对象编程 方法

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

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

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

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

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def 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 = school
    
    def say_hello(self):
        super().say_hello()  # 调用父类的方法
        print(f"我在{self.school}上学。")

student1 = Student("一点的女儿", 5, "幼儿园")
student1.say_hello()

这个例子输出:

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

多态

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

class Animal:
    def make_sound(self):
        pass

class 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)

标签:__,sound,20,Python,self,对象,面向对象编程,方法
From: https://www.cnblogs.com/kiwiblog/p/17950170

相关文章

  • 2024.1.6做题纪要
    P4390[BalkanOI2007]Mokia摩基亚/(离线)简单题第一眼看题,emmm,跟分治有半毛钱关系啊!!!!这每次分治一次不直接复杂度爆炸??冷静下来后,我们发现对于一个点,对于区间产生贡献充要条件是他的\(x\)轴要在区间内。所以。。。我们是不是可以离线下来对于\(x\)轴排一遍序,我们只有左半部......
  • Python创建virtualenv(虚拟环境)方法
    一前言   需求:      --公司之有一台服务器      -目前运行这一个5年前开发的Django项目,基于1.5      -现在要基于Django2.0开发一套程序      -无法卸载原来的版本,必须还要安装新版本二通过virtualenv软件创建安装:      ......
  • 2024-01-06:用go语言,在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧 在
    2024-01-06:用go语言,在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧在桥上有一些石子,青蛙很讨厌踩在这些石子上由于桥的长度和青蛙一次跳过的距离都是正整数我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0...L其中L是桥的长度,坐标为0的点表示桥的起点,坐......
  • python自然语言处理
    #使用NLTK进行文本处理importnltkfromnltk.tokenizeimportword_tokenizepath=r"E:\Code\Python\录制\python-crawler\作业\test"nltk.data.path.append(path)#添加你想要的文件夹路径#确保资源文件下载到指定文件夹nltk.download('punkt',download_dir=path)......
  • 常用Python自动化测试框架有哪些?优缺点对比
    随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架。只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了测试时间。而且由于这些框架被广泛使用,他们具有很好的健壮性,并且具有广泛多样的用例集和技术来轻易发现微小的缺陷。以前,测......
  • python flask get请求接收参数
    前言全局说明pythonflaskget请求接收参数一、安装flsas模块官方源:pip3installflask国内源:pip3installflask-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.com以上二选一,哪个安装快用哪个二、引用模块fromflaskimportFlask,request......
  • 2024.1.6做题总结
    luogu2258[NOIP2014普及组]子矩阵本题乍一看数据范围很小,但是如果暴力的话时间复杂度为\(O(C^r_nC^c_m)\),在最坏情况(\(r=\frac{1}{2}n,c=\frac{1}{2}m\))下过不了。本题满足最优化,但是没得贪,二维好像不好跑dp啊。可以枚举哪些行,然后跑一维的dp。我们用一个dfs固定一下......
  • 快乐学Python,Python基础之代码复用?「函数」
    上一篇文章中,我们了解了代码的分支结构(if家族语句)和循环结构(for循环和while循环)。通过了解这些结构,我们已经能够写出稍微复杂一些的代码。但当代码一多,就会遇到一些问题。上一篇文章中有个案例:根据考试分数打印安全意识分级(优秀、及格和不及格)的代码,如下所示:a=75ifa>8......
  • 【2024潇湘夜雨】WIN11_Pro_Dev_23612.1000软件选装纯净版1.06
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_Dev_23612.1000。2.增加部分优化方案,手工精简部分较多。3.OS版本号为23612.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.15.0.5》网卡版、运......
  • 【愚公系列】2024年01月 WPF控件专题 RadioButton控件详解
    ......