【python基础】类-初识类
1.面向对象思想
在认识类之前,我们需要理解面向对象思想和面向过程思想。
面向过程思想:要拥有一间房屋,面向过程像是自己来修盖房屋,如果需要经过选址、购买材料、砌墙、装修等步骤,面向过程编程,就相当于自己个人来负责这些事情,需要考虑屋子选在什么地方修建,要哪些材料,怎么砌墙,怎么装修等。每一步都需要自己来考虑,然后按照步骤一步一步实施。
面向对象思想:同样拥有一间房屋,但是面向对象更符合现实,类似于专业的人做专业的思想,选址、购买材料、砌墙等步骤由开发商这个对象来完成,作为我们个人自己不需要去考虑这些步骤具体如何实施,对于装修我们可以交给装修公司这个对象来完成,我们个人自己也不需要去考虑具体步骤如何实施,我们个人要做的只是去选择其中某个开发商修建的某套房屋即可,某个装修公司的某个装修方案即可。放在Python编程中,相当于开发商具有提供毛坯房的函数,装修公司有装修方案的函数,我们需要屋子的时候,直接可以去调用开发商的毛坯房函数、需要装修就去调用装修公司的装修方案函数。
所以面向对象思想的编程方式,更符合现实世界钟的事物和情景,面向过程的思想略显复杂,需要考虑过程中的每一步
2.创建类
在面向对象编程中,编写表示现实世界中的事物和情景,我们需要用到类,由类创建对象。类的话类似于上面例子中的开发商的共性信息集合,对象的话类似于就是具体到某个开发商的具体信息集合。使用面向对象编程可更加逼真的模拟现实情景。
使用类几乎可以模拟任何东西。下面我们就编写一个表示人的简单类,类的话表示的不是特定的人,而是任何一个人,里面编写的都是人的共性信息集合。
其语法格式:

我们新建一个people的.py文件,并编写程序如下所示:

通过上面的程序编写我们发现有以下几点:
1.有四个def关键字代表的函数,在类中的函数我们称为类的方法,前面学到的有关函数的一切都适用于方法,我们定义了初始化方法__init__、吃饭方法eat、睡觉方法sleep、学习方法study,虽然只是输出了一条语句,但是我们可以根据需求,继续扩展,这里只是举下例子。
2.init方法,是类的初始化方法,这个一个特殊的方法,每当根据人的类去创建人的实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。
3.__init__方法声明时有两个形参变量,self和name。其中self是必不可少的,还必须位于其他形参变量的前面。因为Python调用__init__方法来创建人的类所对应的人的实例时,将自动传入实参self。所以我们在向People这个类的实例对象传递实参变量数据时,只需传递name,self会自动传递,我们不需要手动传递它
4.每个与类相关联的方法调用都自动传递实参变量self,它是指向实例本身的引用,让实例能够访问类中的属性和方法,属性在这里就相当于name。
5.self.name = name这条语句,以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量。这些变量叫做类的属性
3.创建实例
实例是类的对象,可将类视为有关如何创建实例的说明。People类是实例人的一系列说明,让Python知道如何创建表示特定人的实例。
其语法格式:
变量名 = 类名(实参变量1,实参变量2,,,,,实参变量n)
编写程序如下所示:

我们看到输出结果是一个People object说明这是一个People的对象
如果想输出people这个示例的属性信息,可以在People类编写一个__str__方法,这个其实是重写父类方法,后期会有所介绍。
编写程序如下所示:

这里需要注意的是方法__init__方法并未显式地包含return语句,但Python自动返回一个表示人的实例,我们将这个实例存储在变量people中。
4.访问类属性
要访问实例的属性,可使用句点表示法。
其语法格式:
实例变量名.类属性名
编写程序如下所示:

句点表示法在Python中很常用,这种语法演示了Python如何获悉属性的值。在这里Python先找到实例people,再查找与这个实例相关联的属性name,因为加self前缀的变量,就是与实例相关联的变量,这里找的就是self.name,因为此时self.name的值为'张三',所以输出结果即为'张三'
5.调用类方法
句点表示法不仅可以用来访问类属性,也可用来访问类方法。
其语法格式:
实例变量名.类方法
编写程序如下所示:

6.创建多个实例
我们创建多个人的实例,输出他们的名字并且输出他们正在干什么
编写程序如下所示:

每个人都是独立的一个实例,有自己的一组属性,能够执行相同的操作。我们可以根据一个类创建任意数量的实例。
【python基础】类-初识类的更多相关文章
- Python基础-面向对象初识--类
什么是类 具有相似功能和属性的一类实物 什么是对象 类的具体体现,具体到一个 面向对象的优势 1.类是一组相似功能的集合,使组织结构更加清晰和规范化 2.研究面向对象要有上帝的思维,用面向对象设计程序 ...
- Python基础之初识类和对象
我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程.其实不管是面向过程,还是面向对 象,说白了就是一种编程方式而已.既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” ...
- python基础——使用元类
python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...
- Python基础:新式类的属性访问
一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...
- 二十三. Python基础(23)--经典类和新式类
二十三. Python基础(23)--经典类和新式类 ●知识框架 ●接口类&抽象类的实现 # 接口类&抽象类的实现 #①抛出异常法 class Parent(object): ...
- python基础(14)-反射&类的内置函数
反射 几个反射相关的函数可参考python基础(10)-匿名函数&内置函数中2.2.4反射相关 类的一些内置函数 __str__()&__repr__() 重写__str__()函数类 ...
- Python基础知识:类
初级篇 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向对象三大特性 ...
- Python基础:元类
一.概述 二.经典阐述 三.核心总结 1.类的创建过程 2.元类的使用惯例 四.简单案例 1.默认行为 2.使用元类 五.实践为王 一.概述 Python虽然是多范式的编程语言,但它的数据模型却是 纯 ...
- 2015/9/28 Python基础(19):类的定制和私有性
用特殊方法定制类前面我们讲了方法的两个重要方面:首先,方法必须在调用前被绑定(到它们相应类的某个实例中):其次,有两个特殊方法可以分别作为构造器和解构器的功能,分别名为__init__()和__del ...
- 2015/9/20 Python基础(16):类和实例
面向对象编程编程的发展已经从简单控制流中按步的指令序列进入到更有组织的方式中,依靠代码块可以形成命名子程序和完成既定的功能.结构化的或过程性编程可以让我们把程序组织成逻辑快,以便重复或重用.创造程序的 ...
随机推荐
- LAL v0.34.3发布,G711音频来了,Web UI也来了
Go语言流媒体开源项目 LAL 今天发布了v0.34.3版本. LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. 音频G711 新 ...
- R语言文本数据挖掘(二)
tm文本挖掘示例 文本挖掘是从非结构化的文本信息中抽取潜在的.用户感兴趣的重要模式或知识的过程,可以把它看作数据挖掘或数据库中知识发现的延伸.对文本信息的挖掘主要是以数理统计学和计算语言学为理论基础, ...
- day07 字符串和列表
day07字符串与列表 字符串的内置方法 lower upper startswitch endwhich 格式化输出 format join的用法 replace替换字符串 isdigit判断 字符 ...
- openGauss Datakit安装部署
一.问题描述:目前找不到任何关于opengauuss Datakit安装部署的文档,自己来尝试踩坑. DataKit是一个以资源(物理机,数据库)为底座的开发运维工具,将上层的开发运维工具插件化,各插 ...
- oracle数据对比--用户,索引,分区,dblink,同义词,视图
问题描述:需要对比用户数据一般在数据库迁移之后,需要对比一下两个库之间的差距,如果登上去一条命令的执行,去统计,就会比较麻烦,这里整理了一些脚本可用.通过创建dblink的方式快速查询,也可以整合到一 ...
- 京东小程序接入ARVR的技术方案和性能调优
作者:京东零售 戴旭 京东小程序是一个开放技术平台,正在被越来越多的头部品牌选择,用于站内私域流量的营销和运营.诸如各种日化.奢侈品等品牌对ARVR有较多的诉求,希望京东小程序引擎提供一些底层能力,叠 ...
- 一文详解RocketMQ-Spring的源码解析与实战
摘要:这篇文章主要介绍 Spring Boot 项目使用 rocketmq-spring SDK 实现消息收发的操作流程,同时笔者会从开发者的角度解读 SDK 的设计逻辑. 本文分享自华为云社区< ...
- SpringBoot开启日志级别
#开启logging logging.level.org.springframework.boot.autoconfigure: error logging: level: main.blog.map ...
- MySQL概述与安装
MySQL数据库 概要: 一.MySQL数据库的概述 二.MySQL数据库的搭建 三.MySQL数据库软件的使用 四.MySQL数据类型 五.MySQL数据库数据的操作 一.初始MySQL数据库 1. ...
- [C++项目] 职工管理系统
文章目录 职工管理系统 1.管理系统需求 2.创建项目 2.1 创建项目 2.2 添加文件 3.创建管理类 3.1创建文件 3.2 头文件实现 3.3 源文件实现 4.菜单功能 4.1 添加成员函数 ...