详解python 面向对象三大特征

文章目录

    • 一、面向对象三大特征介绍
      • 1、封装(隐藏)
      • 2、继承
      • 3、多态
    • 二、继承
      • 1、语法格式
      • 2、类成员的继承和重写
      • 3、super()获得父类定义
      • 4、设计模式\_工厂模式实现
    • 5、设计模式\_单例模式实现
      • 关于Python技术储备
        • 一、Python所有方向的学习路线
        • 二、Python基础学习视频
        • 三、精品Python学习书籍
        • 四、Python工具包+项目源码合集
        • ①Python工具包
        • ②Python实战案例
        • ③Python小游戏源码
        • 五、面试资料
        • 六、Python兼职渠道


在这里插入图片描述

一、面向对象三大特征介绍

Python 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。

1、封装(隐藏)

隐藏对象的属性和实现细节,只对外提供必要的方法。

通过“私有属性、私有方法”的方式,实现“封装”。Python 追求简洁的语法

2、继承

继承可以让子类具有父类的特性,提高了代码的重用性。从设计上是一种增量进化,原有父类设计不变的情况下,可以增加新的功能,或者改进已有的算法。

3、多态

多态是指同一个方法调用由于对象不同会产生不同的行为。生活中这样的例子比比皆是:同样是休息方法,人不同休息方法不同。张三休息是睡觉,李四休息是玩游戏,程序员休息是“敲几行代码”。

二、继承

继承是面向对象程序设计的重要特征,也是实现“代码复用”的重要手段。
如果一个新类继承自一个设计好的类,就直接具备了已有类的特征,就大大降低了工作
难度。已有的类,我们称为“父类或者基类”,新的类,我们称为“子类或者派生类”。

1、语法格式

Python 支持多重继承,一个子类可以继承多个父类。继承的语法格式如下:

class 子类类名(父类 1[,父类 2,…]):

类体:如果在类定义中没有指定父类,则默认父类是 object 类。也就是说,object 是所有类的父类,里面定义了一些所有类共有的默认实现,比如:__new__()。

定义子类时,必须在其构造函数中调用父类的构造函数。调用格式如下:

父类名.__init__(self, 参数列表)

class Person:def \_\_init\_\_(self,name,age):self.name = nameself.\_\_age = agedef say\_age(self):print("年龄是:",self.\_\_age)
class Student(Person):def \_\_init\_\_(self,name,age,grade):self.grade = gradePerson.\_\_init\_\_(self,name,age) 
# 构造函数中包含调用父类构造函数。根据需要,不是必须。 子类并不会自动调用父类的\_\_init\_\_(),我
# 们必须显式的调用它。
if \_\_name\_\_ == '\_\_main\_\_':s=Student('诸葛',18,1)s.say\_age()

2、类成员的继承和重写

  1. 成员继承:子类继承了父类除构造方法之外的所有成员。

  2. 方法重写:子类可以重新定义父类中的方法,这样就会覆盖父类的方法,也称为“重写”

class Person:def \_\_init\_\_(self,name,age):self.name = nameself.\_\_age = agedef say\_age(self):print("年龄是:",self.\_\_age)
class Student(Person):def \_\_init\_\_(self,name,age,grade):self.grade = gradePerson.\_\_init\_\_(self,name,age) def say\_age(self):print(self.name,"的年龄是:",self.age)
# 构造函数中包含调用父类构造函数。根据需要,不是必须。 子类并不会自动调用父类的\_\_init\_\_(),我
# 们必须显式的调用它。
if \_\_name\_\_ == '\_\_main\_\_':s=Student('诸葛',18,1)s.say\_age()

3、super()获得父类定义

在子类中,如果想要获得父类的方法时,我们可以通过 super()来做。

super()代表父类的定义,不是父类对象。

class A:def say(self):print("A: ",self)print("say AAA")
class B(A):def say(self):#A.say(self) 调用父类的 say 方法super().say() #通过 super()调用父类的方法print("say BBB")
if \_\_name\_\_ =="\_\_main\_\_:b = B()b.say()

4、设计模式_工厂模式实现

工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。

class CarFactory:def createCar(self,brand):if brand == "1":return one()elif brand == "2":return two()elif brand == '3':return three()else:return "未知品牌,无法创建"
class one:pass
class two:pass
class three:pass
factory = CarFactory()
c1 = factory.createCar("1")
c2 = factory.createCar("2")
print(c1)
print(c2)

5、设计模式_单例模式实现

单例模式(Singleton Pattern)的核心作用是确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。

单例模式只生成一个实例对象,减少了对系统资源的开销。当一个对象的产生需要比较多的资源,如读取配置文件、产生其他依赖对象时,可以产生一个“单例对象”,然后永久驻留内存中,从而极大的降低开销。

class One:\_\_obj = None   #  用于存储这个单例\_\_init\_flag = Truedef \_\_new\_\_(cls, \*args, \*\*kwargs):# 指的是One这个类里面的  类属性if cls.\_\_obj == None:# object 是类的默认父类cls.\_\_obj = object.\_\_new\_\_(cls)return cls.\_\_objdef \_\_init\_\_(self,name):if One.\_\_init\_flag:print( "init....")self.name = nameOne.\_\_init\_flag = False
if \_\_name\_\_=='\_\_main\_\_':a = One( "aa")print(a)b = One( "bb")print(b)

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,希望提供给想学习 Python 的小伙伴们一点帮助!

保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5 - 把ArchvizExplorer项目改造成自己的数字孪生项目 - 开发记要

参考: https://blog.csdn.net/qq_17523181/article/details/133853099 https://blog.csdn.net/qq_17523181/article/details/134455597 1. 安装项目 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-exp…

如何用好金鸣表格文字识别电脑客户端的“图片编辑”功能?

想要让文字识别效果更上一层楼,图片编辑处理少不了,今天就来教大家如何运用金鸣表格文字识别电脑客户端编辑器提升图片质量。 首先,点击顶部导航菜单中的“软件下载”,下载安装金鸣表格文字识别电脑客户端,并将图片添加…

工业软件:破局智能制造“关键一招”

工业是国民经济的重要支柱,也是技术创新的主战场,是创新活动最活跃、创新成果最丰富、创新应用最集中、创新溢出效应最强的领域之一。 过去,图纸定义产品、工艺约束制程、说明书描述功能,是工程惯例。一旦产品造好,想…

element-plus组件中的el-drawer的使用

在项目的制作过程中经常会用到弹窗组件,这里假设一种情况当你在一个页面需要多个弹窗组件的时候怎么样才能精准的打开和关闭对应的弹窗呐?? ① 绑定一个点击事件----【给点击事件传入一个下标】这里是打开事件 ② 使用element-plus中的 :befo…

工商业分布式光伏电站的盈利模式有哪些?

工商业光伏系统,是安装于机关事业单位、医院、学校、商场、写字楼、工商业园区等工商业相关建筑屋顶的光伏并网系统,通常属于分布式光伏项目。具有投资成本低、回报周期短、回报稳定、就近开发等特点,可以大幅度提升光伏发电利用率。 工商业…

图像处理中的角点检测Python-OpenCV 中的实现

马丁亚当斯 (Martin Adams)在Unsplash上拍摄的照片 一、说明 在图像处理的背景下,“特征”可以直观地理解为图像中易于识别并用于表示图像的独特或独特的部分。将特征视为图像中使其可区分的“地标”或“焦点”。为了使这一点更具关联性,请考虑一下您如…

EM32DX-C4【C#】站15

1外观: J301 直流 24V 电源输入 CAN0 CAN0 总线接口 CAN1 CAN1 总线接口 J201 IO 接线段子 S301-1、S301-2 输出口初始电平拨码设置 S301-3~S301-6 模块 CAN ID 站号拨码开关 S301-7 模块波特率拨码设置 S301-8 终端电阻选择开关 2DI: 公共端是…

stm32项目(11)——基于stm32的俄罗斯方块游戏机

1.功能设计 使用stm32f103zet6平台,以及一块LCD屏幕,实现了一个俄罗斯方块游戏机。可以用按键调整方块的位置、还可以控制方块下降的速度! 2.视频演示 俄罗斯方块 3.俄罗斯方块发展史 俄罗斯方块是一种经典的拼图游戏,由苏联俄罗…

CoreDNS实战(二)-CoreDNS+ETCD实现DNS服务发现

1 引言 在前面的文章中讲了如何搭建一个内网的DNS服务,但是这里有个问题,mxsm-register.local表示局域网的注册中心域名,如果需要将每台部署了注册中心的IP地址写到CoreDNS的配置文件中。这样就需要每次都去修改 Corefile 配置文件。那有没有…

数据结构:链表应用:第6关:链表的分解

任务描述 本关任务:利用单链表A表示一个非零整数序列,把A分解为两个具有相同结构的链表B和C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点。要求空间复杂度为O(1),链表B和C均利用链表A的结点…

Perl | Multi-line Strings | Here Document

原文链接:https://www.geeksforgeeks.org/perl-multi-line-strings-here-document/ Multi-line string using Here Document Here Document is an alternative way for multiple print statements. A Here-Document can also be used for multi-line string. It d…

WordPress定时发布文章失败的原因及解决办法

WordPress的定时发布功能可以使我们能够提前准备好文章,并在特定的日期和时间自动发布。这样,可以根据内容计划和读者喜好来安排发布时间,而不必手动操作,在不方便操作的情况下实现内容的即时更新发布,这个功能还是非常…

Orvibo另款网关ViCenter-300的分析之二,系统分析

Vicenter300的分析,请上接之一 Orvibo另款网关ViCenter-300的分析之一的链接地址: Orvibo另款网关ViCenter-300的分析之一-CSDN博客 简单地看了一下硬件的组成部分,从中我们可以看出,Openwrt系统是嵌入式系统入门级的系统,也是一个很容易转换为产品的系统之一。 很多智…

【C语言】【二级】将所指字符串中所有下标为奇数位置上的字母转换成大写

题目 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。 例如,若输入" abc4EFG",则应输出"aBc4EFG"。 考点 考点:指针、ASCII码、 数组和循环语句。 解法&#x…

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测&#xff0…

设备制造行业CRM:提升客户满意度,驱动业务增长

设备制造行业客户需求多样化、服务链路长,企业在关注APS、EMS等工业软件之余还要以客户为中心,做好客户服务。设备制造行业CRM管理系统是企业管理客户关系的利器,设备制造行业CRM的作用有哪些?一文带您看懂。 设备制造行业需要解…

【LeetCode热题100】【双指针】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …

不同角度范围下四元数转欧拉角的方式

前言 在标定过程中求出的欧拉角与预设真值差距太大,检查中发现求出的角度与真值角度都可以将车辆坐标系变换到相机坐标系。后通过查阅文献,发现四元数对应的欧拉角并不唯一,在不同的条件下可求出不同的欧拉角,实际应用中需根据实…

java-快速入门篇

温馨提醒:概念固然重要,但通过概念下面的例子更容易理解并运用哦 文章目录 1. 基础语法1.1 变量与数据类型1.2 条件语句1.3 循环结构 2. 面向对象2.1 类与对象2.2 继承与多态 3. 集合框架3.1 列表(List)3.2集(Set&…

【LeetCode】2629. 复合函数

复合函数 题目题解 题目 请你编写一个函数,它接收一个函数数组 [f1, f2, f3,…, fn] ,并返回一个新的函数 fn ,它是函数数组的 复合函数 。 [f(x), g(x), h(x)] 的 复合函数 为 fn(x) f(g(h(x…