python中自定义类中的self_Python类和构造方法

1.面向对象介绍

描述:是函数的一个变种,在Python中,有函数式编程和面向对象编程,java和C#之类只能把函数写到类里,没有函数式编程,所以只有面向对象,所以在Python中有了选择,可能就变得有点麻烦,但是在Python里,函数式编程是可以完成所有的功能的,人都是想把事情变得越来越简单,机械化,而在函数式编程中可以使用的代码量和设计比较多,而可能几行代码面向对象就可以实现
分析:

a、Python: 支持函数式,支持面向对象
b、函数式可以做所有的事,但是是否合适?
c、示例

e8449bb33f2f241c3079a52358f6f96b.png

函数实现

描述:一般情况下,使用以下函数来实现打印,但是存在一个小问题,前三个和后三个的名字、年龄、性别都是一样的,相当于各自传了三次,在文件操作的情况下,首先找到文件路径,打开文件进行操作,最后要关闭它,对于数据库,实际上也是一样的,要连接它首先知道它的服务器地址,账户密码之类的,如果以下的示例比作数据,前面的名字、年龄,性别类似于数据库的账户和密码之类的,后面的内容就是在数据的增删查改等操作,所以在这里的参数传送不太合适

6ddb4ff0a7178135334cddc705b8832b.png

类的实现:定义类和创建对象

第一个版本:函数修改成类的形式

03657efc414e615ce99736742150767c.png

2.函数与类的对比

a. 定义
函数:
  def + 函数名(参数)
面向对象:

  • class ==> 类,如bar类,bar是类名
  • def ==> 在类中有def是方法
  • 类中的方法,第一个参数要写self

b. 执行
函数:
  函数名(参数)
面向对象:

  • a.不对直接访问方法,要先创建名称 = 类名(),相当于创建一个中间人,通过它去访问里面的方法,如obj.f()调用
  • b.这个obj.f()中间人还有一个别名叫作对象,也可以叫作实例
  • c.实际是类和对象的应用

Summary: 使用class关键字定义一个类,类中有方法,可以没有方法,但是就没有意义,相当于写个模块里面没功能,然后创建一个对象,通过它来调用方法,而且类的方法就是函数,函数有返回值,类也有返回值

15f5ab6b644484b426a4ad5d7e9353fd.png

3.self是什么?

4d957ebc10de5dcc560bbdc2b4df925f.png

写函数时可以传参数,这个是形式参数,self单独说就是一个形式参数,创建类class后的操作,在内存中有一个空间,在类的空间中创建一个方法fuc,创建中间人mid1,也就是在类名后加上括号就可以,相当于在内存里再开辟一段内存空间,mid1是根据类来创建的,中间人只能去找类中的方法,所以它与类之间要有一个关联,在中间人内部有指向类,它叫做类对象指针

代码执行过程:从上到下执行,遇到类又遇到方法,把代码放到内存中,再执行中间人 = 类名(),也就是根据类名创建一个中间人,在内存中开辟新的内存空间,中间人是根据类名加了个括号,所以中间人与类之间是有关联的,再通过中间人去执行方法时,中间人就要找到对应的类,再去类中找到方法,再执行,而且可以再创建一个中间人mid2,也是在类后加一个括号,也是有关联,mid2也可以执行类中的方法

a. 字符串例子分析

2df925bfe54b9ab3fec7df1c80c64eeb.png

b.self在类中的使用

中间人1 = 类名()代表一块内存,中间人2 = 类名()代表的是另一块内存,中间人1要执行类中的方法时,它是自己找类中的方法,而
中间人2也是找到类中同一个方法,类中有一个函数叫f(自定义),这个函数名有一个self,self是python自身传入的参数,实际情况是,
中间人1去执行类中的方法时,self就是中间人1,中间人2执行类中的方法时,self就是中间人2

c. 测试self: self代指调用方法的对象(中间人)

68984bae6828293e37cbf13d48603b64.png

d.self进一步分析

描述:中间人执行类中的方法时,会把自身传过去,在类中的方法fuc中可以得到中间人,中间人中可以存放内容,中间人执行类中的方法时,可以得到中间人,所以它可以取得中间人里面的内容

3f263b5efd7f72669ce285aa1d6ea58b.png

7e33375fc973be27423a2bb5fc59b887.png

z1与z封装的值不一样,都是一个中间人,共同引用类中的方法

c3f99b091d3dda581eff97a8b3fdeb55.png

第二个版本

8a9051a8-3f2c-eb11-8da9-e4434bdf6706.png

第二个版本延伸到数据库使用

描述:在数据库中的增删改查的操作,在它们的内部self都有三个值可以使用,也就没必要一次性再重新给它传入参数,方法中公用的要知道,在类中的方法里,公用的字段可以封装到中间值中,如果不是公用的要传什么就传什么,把值放入到对象的过程叫封装

494a168299d7e6e12cb5ff024273fe3a.png

4.构造方法

特殊作用:
  obj = 类名()
  实现两个任务:一般情况执行方法时,是把自身内容传入,这里执行方法时,是内部定义好了,自动会执行一个方法,那个方法名固定了,在内部调用时,会把自身也传递过程
          a.创建对象
          b.通过对象执行类中的一个特殊方法第三个版本修改

72cb851230b9a1807fde575895c128f8.png

区别: 两者区别是认证调用的

edb51721714a71f96715b99692e07ec7.png

init的操作使用

描述:一般在创建对象时,会把一些公用的字段都放入init方法,init方法一般用于初始化,因为创建对象时,有些是需要先创建,当执行obj = 类(),python内部会自动调用init方法来执行,如果init中没写代码,相当于没有写,所以init就是类后面加上括号,python自动执行

fcabe1bb0154d2b9c69bde47c646d980.png

init的实例

实例1:

b7bd152d8348e1e2f068d06e40626fb4.png

实例2:

1042fc56f4627bf6a9c36a3773d50a56.png

0803f893582ec529823265123b954158.png

实例3:

描述:如下人的例子,假设要每个人的血型都是0

d2635cf70e8209c47c0ba7a350f5855b.png

转自:Python攻克之路-类和构造方法 - Reid21 -侵删

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

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

相关文章

激光slam_机器人主流定位技术,激光SLAM与视觉SLAM谁更胜一筹

定位技术是机器人实现自主定位导航的最基本环节,是机器人在二维工作环境中相对于全局坐标的位置及其本身的姿态。目前SLAM (Simultaneous Localization and Mapping,即时定位与地图构建)是业内主流的定位技术,有激光SLAM和视觉SLAM之分。什么…

IOC操作Bean管理XML方式(bean的作用域)

目录 IOC操作Bean管理XML方式(bean的作用域) 1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式 (1)在Spring 配置文件bean 标签里面有属性(scope)用于设置单实例还是多实例 &am…

bucket sort sample sort 并行_双调排序Bitonic Sort,适合并行计算的排序算法

双调排序是data-independent的排序, 即比较顺序与数据无关的排序方法, 特别适合做并行计算,例如用GPU、fpga来计算。1、双调序列在了解双调排序算法之前,我们先来看看什么是双调序列。 双调序列是一个先单调递增后单调递减&#x…

边缘检测后去除噪点_修图前vs修图后,原来那些网红“照骗”都是这样修出来的!...

如今手机上有许多功能强大的后期app都能帮助我们轻松实现一键修图我们也经常可以在网上看到各路大神们各显神通的手机修图作品无论是风景、人像还是创意修图前和修图后对比强烈、美若两图看到这里你是否想问为什么同样是用手机修图别人修的图总是比我好看到底是哪里出错了呢&am…

IOC操作Bean管理XML方式(bean 的生命周期)

目录 IOC操作Bean管理XML方式(bean 的生命周期) 1.bean 的生命周期(在单例模式下的生命周期) (1)通过构造器创建 bean 的实例(执行类中无参构造方法去创建对象) (2&…

springboot listener_Springboot 全套面试提升宝典,为金三银四冲刺

简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发…

IOC操作Bean管理XML方式(xml自动装配)

目录 IOC操作Bean管理XML方式(xml自动装配) 一.演示自动装配过程 (1)根据 属性名称 装配 步骤一: 步骤二: 步骤三: (2)根据 属性类型 装配 (2.1&#…

IOC操作Bean管理XML方式(外部属性文件)

目录 IOC操作Bean管理XML方式(外部属性文件) 前情引入: 实验演示: 1.直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池jar包 (3)创建一个b…

IOC操作Bean管理注解方式(创建对象)

目录 IOC操作Bean管理注解方式(创建对象) 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供注解主要有以下四种 (1)Component (2)Service (3)Controller (4&am…

嵌入式操作系统_航天科工海鹰翼辉嵌入式操作系统获自主原创“身份证”

日前,由中国航天科工集团三院三部研发的海鹰翼辉嵌入式操作系统顺利通过中国信息安全评测中心的自主原创评测,成为国内首个具有自主原创“身份证”的嵌入式操作系统。随着物联网和人工智能技术的快速发展,传统武器装备逐步进入智能互联时代&a…

.net core 调用c dll_Qt编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

一、前言最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了很多人家的SDK,绝大部分用VC编写,而且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库&#…

求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)

这段时间跟二叉树杠上了,接下来还有许多二叉树的题目,虽然已经做了不少了,大多题目都涉及到了递归,也挺好,刚好有机会练习一下递归,但是遇到新的题目还是有点力不从心,还需要看参考答案&#xf…

IOC操作Bean管理注解方式(组件扫描配置)

IOC操作Bean管理注解方式&#xff08;组件扫描配置&#xff09; 开启组件扫描的 细节配置 约定那些类可以扫描&#xff0c;哪些类不可以扫描 bean1.xml配置如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://w…

rabbitmq 持久化_RabbitMQ原理与相关操作(三)消息持久化

现在聊一下RabbitMQ消息持久化&#xff1a;问题及方案描述1.当有多个消费者同时收取消息&#xff0c;且每个消费者在接收消息的同时&#xff0c;还要处理其它的事情&#xff0c;且会消耗很长的时间。在此过程中可能会出现一些意外&#xff0c;比如消息接收到一半的时候&#xf…

视图的数据存放在哪里_分布式 | DBLE 是如何实现视图的?

作者&#xff1a;苏仕祥浩鲸科技 PaaS 组件团队成员&#xff0c;长期从事分库分表中间件的相关解决方案工作&#xff0c;热爱技术&#xff0c;乐于分享。本文来源&#xff1a;原创投稿*爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并…

IOC操作Bean管理注解方式(注入属性@Autowired和Qualifier)

目录 IOC操作Bean管理注解方式&#xff08;注入属性Autowired、Qualifier和Resource&#xff09; 1.基于注解方式实现 属性注入 &#xff08;1&#xff09;Autowired&#xff1a;根据属性类型进行自动装配 第一步&#xff1a; 第二步&#xff1a; &#xff08;2&#xff…

python数据可视化的特点_6 种 Python 数据可视化工具

原标题&#xff1a;6 种 Python 数据可视化工具 英文&#xff1a;Chris Moffitt&#xff0c;编译&#xff1a;伯乐在线/李加庆 简介 在 Python 中&#xff0c;将数据可视化有多种选择&#xff0c;正是因为这种多样性&#xff0c;何时选用何种方案才变得极具挑战性。本文包含了一…

IOC操作Bean管理注解方式(完全注解开发)

IOC操作Bean管理注解方式&#xff08;完全注解开发&#xff09; &#xff08;1&#xff09;创建配置类&#xff0c;替代xml配置文件 需要让Spring 把一个普通的类认为是配置类 结构图&#xff1a; SpringConfig类代码如下&#xff1a; package com.lbj.spring5.comfig;import …

Spring的AOP-基本概念

AOP-基本概念 Aspect Oriented Programming&#xff1a;面向切面编程&#xff0c;利用AOP 可以对业务逻辑的各个部分进行隔离。从而使得业务逻辑各部分之间的 “ 耦合度降低 ” 通俗解释&#xff1a;在不修改原有代码的情况下增加功能而不影响原有功能&#xff0c;在主干功能里…

为什么python打不开_python文件打不开如何解决

python中打开文件使用的是open()函数&#xff0c;获取文件对象&#xff0c;之后的操作都是相对于文件对象而言的。f open(your_file.txt,r) 就可以打开一个文件进行操作。第二个参数为对文件的操作方式&#xff0c;’w’是写文件&#xff0c;已存在的同名文件会被清空&#xf…