class传参 python_Python类的概念、定义、属性、继承

4bcd32a50d0d2fc2883f814c83ae018d.png
bdd92b42549926eb9f582b93c15cfc5d.png

1.面向对象(Object Oriented,OO)概念

面向对象,是我们编程的一种思维。

早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承。通过面向对象的方法,更利于用人理解的方式,对复杂系统进行分析、设计与编程。同时也提高了系统的可维护性,可扩展性,可重用性。

(就是使编程的思维,更接近与人的思维和认知)

面向对象编程的关键,就是类的定义。

类是对现实生活中一类具有共同特征的事物的抽象。

2.类的定义

基本形式: class ClassName(object): Statement 1.class定义类的关键字2.ClassName类名,类名的每个单词的首字母大写(驼峰规则)。3.object是父类名,object是一切类的基类。在python3中如果继承类是基类可以省略不写。'''重点:学会定义类,了解属性和方法,类的初始化和实例化。定义类时,这种方法可以使类对象实例按某种特定的模式生产出来。'''#类方法:'''后面的参数中第一个参数我们约定俗成的为self参数名,self代表的是在类实例化后这个实例对象本身。初始化函数除了有self这个参数表示实例对象本身之外,其他的参数的定义也遵循函数的必备参数和默认参数一样的原则,必备参数就是在实例化是一定要传入的参数,默认参数就是在定义时可以给这个参数一个初始值。没有函数名的函数'''

3.类的实例化

 基本形式:实例对象名 = 类名(参数) 在实例化的过程中,self代表的就是这个实例对象自己。 实例化时会把类名后面接的参数传进去赋值给实例, 这样传进去的参数就成为了这个实例对象的属性。 实例化的过程遵循函数调用的原则。 在实例化时也必须个数和顺序与定义时相同(使用关键字参数可以改变传参的顺序)。 当初始化函数定义时使用了默认参数时,在实例化时默认参数可以不传参这时 这个实例对象就会使用默认的属性,如果传了参数进去则会改变这参数值, 使实例化对象的属性就为你传进来的这个参数。 isinstance(实例名,类名) 判断一个实例是不是这个类的实例。
#类 类是对现实生活中,具有共同特征的事物的抽象。class Animal(object):  pass# object, 基类。 任何类都需要继承object# 类 (模子)class Animal: #python3 继承object,可写可不写 passdog = Animal() #生成一个实例 dogcat = Animal() #生成实例cat##构造方法 __init__() , self 参数class Animal: def __init__(self): # 构造方法,实例化对象时,必须要调用__init__ print('正在实例化一个类') def test(self): print('aaa')#当我们没有写__init__() ,默认调用我们父类__init__class Animal: def test(self): print('aaa')###self, 实例化对象(本身)#self 可以替换成别的参数名。但是最好别改class TestSelf: #方法 :testSelf 方法的首字母小写 类: TestSelf 类的首字母一般大写 驼峰命名规则 def __init__(self): #在初始化的时候,默认往构造方法,传入一个值 print('正在实例化') def test(self):  print('bbb') def test2(): print('ccc')

4.类和实例的属性

 类属性 .类属性是可以直接通过“类名.属性名”来访问和修改。 .类属性是这个类的所有实例对象所共有的属性, 任意一个实例对象都可以访问并修改这个属性(私有隐藏除外)。 .对类属性的修改,遵循基本数据类型的特性:列表可以直接修改,字符串不可以, 所以当类属性是一个列表时,通过任意一个实例对象对其进行修改。 但字符串类型的类属性不能通过实例对象对其进行修改。 当实例对不可变对象进行修改之后,会查找实例的类属性,不会查找类的属性,同时类的属性不会边  实例属性 .在属性前面加了self标识的属性为实例的属性。 .在定义的时候用的self加属性名字的形式,在查看实例的属性时 就是通过实例的名称+‘.’+属性名来访问实例属性。
 一些说明: .一般,方法第一个参数被命名为self,,这仅仅是一个约定, self没有特殊含义,程序员遵循这个约定。 .查看类中的属性和实例属性可以调用__dict__方法返回属性组成的字典。 .Python中属性的获取是按照从下到上的顺序来查找属性 .Python中的类和实例是两个完全独立的对象 .Python中的属性设置是针对对象本身进行的
####属性, 属性本质上就一个变量'''1.实例化属性2.类属性 (共有属性)'''# 1.实例化属性 , self.nameclass Animal: def __init__(self,name,food): #自己独有的,就放到实例化里面 print('正在实例化') self.name = name # 实例化属性:每个实例可能不同,但是都有 self.food = food def get_name(self): print(self.name)#2.类属性 (共有属性)class Animal: eye = 2 leg = 4 #共有的 def __init__(self,name,food): print('正在实例化') self.name = name self.food = food def get_name(self): print(self.name)

5.类的私有属性和方法

 在Python中,通过单下划线”_”来实现模块级别的私有化,一般约定以单下划线”_”开头的变量、函数为模块私有的,也就是说”from moduleName import *”将不会引入以单下划线”_”开头的变量、函数 对于Python中的类属性,可以通过双下划线”__”来实现一定程度的私有化。 _”和” __”的使用 更多的是一种规范/约定,不没有真正达到限制的目的: “_”:以单下划线开头只能允许其本身与子类进行访问,(起到一个保护的作用) “__”:双下划线的表示的是私有类型的变量。这类属性在运行时属性名会加上单下划线和类名。 “__foo__”:以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如 __init__()
'''在Python中,通过单下划线”_”来实现模块级别的私有化,一般约定以单下划线”_”开头的变量、函数为模块私有的,也就是说”from moduleName import *”将不会引入以单下划线”_”开头的变量、函数'''import random #全部会导入 from random import* #_Set 不会倒入class Animal: _eye = 2 __leg = 4 #共有的 def __init__(self,name,food): print('正在实例化') self.name = name self.food = food def get_name(self): print(self.name)#_”和” __”的使用 更多的是一种规范/约定,并没有真正达到限制的目的:dog._eye = 3#dog._Animal__leg ##__ 默认加一个类名,用来警告# “__foo__”:以双下划线开头和结尾的(__foo__)#代表python里特殊方法专用的标识,如 __init__()

6.数据封装

在类里面数据属性和行为函数的形式封装起来,访问时直接调用,不需知道类里面具体的实现方法。 比如,list.append

7.继承

用法: .在定义类时,可以从已有的类继承, 被继承的类称为基类(父类),新定义的类称为派生类(子类)。  .在类中找不到调用的属性时就搜索基类, 如果基类是从别的类派生而来,这个规则会递归的应用上去。 反过来不行。  .如果派生类中的属性与基类属性重名,那么派生类的属性会覆盖掉基类的属性。 包括初始化函数。  .派生类在初始化函数中需要继承和修改初始化过程, 使用’类名+__init__(arg)’来实现继承和私有特性,也可以使用super()函数。  issubclass(类名1,类名2) 判断类1是否继承了类2 作用: 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。 继承完全可以理解成类之间的类型和子类型关系。  子类在重写父类方法之后,如果要继承父类方法中的功能,要先调用父类的方法 class.fun(self)

8.多态

当派生类重写了基类的方法时就实现了多态性。(子类重写父类方法)

## 面向对象 三个特征: 封装 ,继承 多态# 封装class Animal: eye = 2 leg = 4 #共有的 def __init__(self,name,food): print('正在实例化') self.name = name self.food = food def get_name(self): print(self.name) def get_food(self): print(self.food)# 继承#面向对象的编程带来的主要好处之一是代码的重用class People(Animal): leg = 2 def __init__(self,name,food,sex): self.name = name self.food = food self.sex = sex  def get_sex(self): print(self.sex) def speak(self): print('asdsdgfsagg') def eat(self): print('果子') #多态, (子类重写父类方法) ,继承。 (同一个方法,有不同表形式)class Chinse(People): def speak(self): print('你好') def eat(self): print('米饭')class America(People): def speak(self): print('hello') def eat(self): print('面包') class Thai(People): def speak(self): print('萨瓦迪卡') def eat(self): print('香蕉')xiaoMing = Chinse('小明','米饭','男')jeck = America('jeck','面包','男')lala = Thai('lala','香蕉','未知')'''总结:1.类的定义2.__init__() 构造方法3.self 参数。 实例对象本身4.类属性 (共有属性), 实例化属性 5._ __ python 类的私有化。6. 面向对象 三大特征: 封装 继承 多态'''

“我自己是一名从事了多年开发的Python老程序员,辞职目前在做自己的Python私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的Python学习干货,从最基础的到各种框架都有整理,送给每一位喜欢Python小伙伴,想要获取的可以转发文章并关注我的头条号。在后台私信我:01,即可免费获取。"

1cd5a46ec7d1d23de767ed45aa9ea4c6.png

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

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

相关文章

4x4矩阵键盘工作原理及扫描程序_单片机人机交互矩阵按键

按键是一种常开型按钮开关,与单片机的常见接法如图所示。按键未按下时两个触点断开,单片机I/O口输入高电平;当按键闭合时,I/O口输入低电平。一、按键讲解当I/O口为P0口时,由于没有内部上拉电阻,所以必须外接…

android给数组添加新元素_重磅!超详细的 JS 数组方法整理出来了

作者:Yushiahttps://juejin.cn/post/6907109642917117965数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响。一、创建数组1.使…

小米登录协议分析_性能测试篇之Loadrunner与ida工具结合完成java vuser协议的脚本...

你这么优秀,一定只想把“柠檬班”置顶▲→性能3期优秀作业利用lr的java vuser协议完成(登录,md5加密完成重置支付密码,获取订单列表)请求,并加if判断完善脚本本文由柠檬班性能3期学员eleven根据作业原创出品。1工作准备jdk版本的选…

发动机压缩比怎么计算公式_2020沃德十佳发动机出炉:这三款机头,20万内就能买到...

引言 | 内燃机最后的巅峰?《Wards Auto World》每年都会发布沃德十佳发动机榜单,2020年度的榜单早在去年底已经出炉,但小编觉得仍有可讲之处。考虑到老美特殊的驾驶环境,地广人稀,基础设施齐全,人工费奇高&…

计算ln_钢筋工程算量培训-钢筋工程量计算公式

框架梁一首跨钢筋的计算1、上部贯通筋上部贯通筋(上通长筋1)长度=通跨净跨长+首尾端支座锚固值2、端支座负筋端支座负筋长度:第一排为Ln/3+端支座锚固值;第二排为Ln/4+端支座锚固值3…

智能照明控制系统电路图_咻享智能|学校教室智能照明控制系统怎么理解

教室是学校照明用电的主要部分。教室灯光照度设计标准为室内平均照度300 lx,这样高的照度要求,如果没有合理控制方案,能源上将造成巨大的浪费。因此将智能照明控制系统应用于普通教室、阶梯教室具有相当的实际意义。对于学校而言,…

redis关键字删除_微信公众号文章防删除

阅读本文大概需要 3.6 分钟。前段时间《一个出身寒门的状元之死》刷屏了,当我看完了这篇文章,很有感触,一开始我以为是事实,后来才发现完全是虚构,对于我来讲并不是非常在乎文章中的故事是否是真实的,我在乎…

java单链表节点翻转_Java数据结构01-链表基础(讲解+代码+面试题)

文章结构链表的概念/用处链表的基本代码实现(韩顺平Java数据结构网课)剑指offer上链表题目代码实现(个人手敲,更精巧的答案可以参考官网)链表链表包含单链表,双向链表,循环链表等等。相对于线性…

分解连续自然数的和_小学奥数各年级经典题解题技巧大全——分解因数法(2)...

*例7:在等式35( )8127718( )162的两个括号中,填上适当的最小的数。(适于六年级程度)解:将已知等式的两边分解质因数,得:5377( )22367( )把上面的等式化简,得:15( )4( )所以&a…

即席和即兴_即兴说话小课堂

即 兴 说 话 小 课 堂了解发音的小知识,运用语言技巧,通过音色、音强,来达到的一种发音。发音的能力,更重要的是提高自己的普通话水平,锻炼自己的综合能力。师兄的课堂是非常难得,大家一起来学习吧&a…

云片短信php接口_php与阿里云短信接口接入

使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证官方审核多次,尤其审核需要保持耐心。1. accessKeyId 相当于你的个人账户密钥;2. accessKeySecret 与上是成对的;3. SignName 个人签名&#xff…

读中文_校友分享预告 | 在港中文读物理是什么体验?理科就业转商科有何经验心得?...

留学分享会总第233期港新地区校友分享实录商科《19年入读港大金融师姐带来最新香港就读体验与求职经验》《在香港大学读金融是怎样一种体验?》《在香港大学读会计是怎样一种体验?》《在香港大学读商业分析是怎样一种体验?》《在新加坡国立大学…

命令逐行显示_在LoadRunner中执行命令行程序之:popen()取代system()

》》》推荐阅读《《《1、性能测试学习笔记-场景设计2、性能测试的重要意义3、性能分析流程及方法4、应用系统性能调优之性能分析在LoadRunner中执行命令行程序之:popen()取代system() 我想大家应该都知道在LoadRunner可以使用函数system()来调用系统指令&#xf…

的使用go_使用 Go 开发 Prometheus Exporter

Exporter 是 Prometheus 监控的核心,如果你遇到一些应用不存在相应的 Exporter,那么我们可以自己去编写 Exporter。下面我们简单介绍如何使用 Golang 来快速编写一个 Exporter。1. 安装 GO 和依赖包按照 https://golang.org/doc/install 上的步骤进行安装…

flask 获取前端form内容_flask 项目中使用 bootstrapFileInput(进阶篇)

bootstrap 为 flask 使用人员提供了一个非常优美且有效的前端页面组件,但是完美之处还存在些许缺陷,比如文件的上传功能.而 bootstrap-fileinput 是基于 bootstrap 的控件,非常完美的填补了这个空缺.注意: 本文是基于 bootstrap-fileinput v4.4.2. github 地址: https://github…

phpstudy能安装不带mysql的么_装了phpstudy还需要装mysql吗

phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的ApachePHPMySQLphpMyAdminZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。对…

mysql 5.1.53_mysql 5.1.53免安装版的优化配备和精简

mysql 5.1.53免安装版的优化配置和精简[摘要]MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。本文介绍mysql-noinstall.zip免安装版的优化配置和精简。欢迎大家阅…

python牛顿法寻找极值_python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例...

Rosenbrock函数的定义如下:其函数图像如下:我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验。梯度下降梯度下降的更新公式:图中蓝色的点为起点,橙色的曲线(实际上是折线)是寻找最小值点的轨迹,终点(最小值点…

mysql报11004_使用mysqli扩展技术查看服务器连接错误报告的方法

使用mysqli扩展技术查看服务器连接错误报告的方法作为PHP的黄金搭档MySQL数据库,在PHP项目开发过程中有着举足轻重的作用,这不仅因为MySQL是完全免费的,而且和PHP一样都是完全跨平台的。但在实际项目开发过程中,PHP与MySQL数据库产…

_Linux进程信号详解

信号是什么一个信号就是一条小消息,它通知进程系统中发生了一个某种类型的事件信号是多种多样的,并且一个信号对应一个事件,这样才能做到收到一个信号后,知道到底是一个什么事件,应该如何处理(但是要保证必…