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基础】类-初识类的更多相关文章

  1. Python基础-面向对象初识--类

    什么是类 具有相似功能和属性的一类实物 什么是对象 类的具体体现,具体到一个 面向对象的优势 1.类是一组相似功能的集合,使组织结构更加清晰和规范化 2.研究面向对象要有上帝的思维,用面向对象设计程序 ...

  2. Python基础之初识类和对象

    我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程.其实不管是面向过程,还是面向对 象,说白了就是一种编程方式而已.既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” ...

  3. python基础——使用元类

    python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...

  4. Python基础:新式类的属性访问

    一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...

  5. 二十三. Python基础(23)--经典类和新式类

    二十三. Python基础(23)--经典类和新式类 ●知识框架   ●接口类&抽象类的实现 # 接口类&抽象类的实现 #①抛出异常法 class Parent(object):    ...

  6. python基础(14)-反射&类的内置函数

    反射 几个反射相关的函数可参考python基础(10)-匿名函数&内置函数中2.2.4反射相关 类的一些内置函数 __str__()&__repr__() 重写__str__()函数类 ...

  7. Python基础知识:类

    初级篇 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向对象三大特性 ...

  8. Python基础:元类

    一.概述 二.经典阐述 三.核心总结 1.类的创建过程 2.元类的使用惯例 四.简单案例 1.默认行为 2.使用元类 五.实践为王 一.概述 Python虽然是多范式的编程语言,但它的数据模型却是 纯 ...

  9. 2015/9/28 Python基础(19):类的定制和私有性

    用特殊方法定制类前面我们讲了方法的两个重要方面:首先,方法必须在调用前被绑定(到它们相应类的某个实例中):其次,有两个特殊方法可以分别作为构造器和解构器的功能,分别名为__init__()和__del ...

  10. 2015/9/20 Python基础(16):类和实例

    面向对象编程编程的发展已经从简单控制流中按步的指令序列进入到更有组织的方式中,依靠代码块可以形成命名子程序和完成既定的功能.结构化的或过程性编程可以让我们把程序组织成逻辑快,以便重复或重用.创造程序的 ...

随机推荐

  1. 超全 泛微 E9 Ecology 9开发资料大全 开源资源下载 泛微E9二次开发 泛微开发实战经验 泛微开发实战例子 泛微二次开发项目例子 泛微二次开发Demo 泛微二次开发完整例子 泛微二次开发入门

    由于工作需要,E9在泛微一推出来,以前所在的企业就第一时间上线了,经过四年多的运行,功能强大再加上在上面开发非常多的业务,一般的企业员工只需要打开泛微就可以处理完平时信息化的业务.后来又去外包公司专业 ...

  2. Flask快速入门day02(1、CBV使用及源码分析,2、模板用法,3、请求与响应的基本用法,4、session的使用及源码分析,5、闪现,6、请求扩展)

    目录 Flask框架 一.CBV分析 1.CBV编写视图类方法 二.CBV源码分析 1.CBV源码问题 2.补充问题 3.总结 三.模板 1.py文件 2.html页面 四.请求与响应 1.reque ...

  3. 部署:Mysql8和Mysql5.7部署同一服务器

    问题描述:将Mysql8.0.22和Mysql5.7.32部署在同一环境下 操作系统:centos7.8 数据库:Mysql8.0.22.Mysql5.7.32 版本 占用端口 实例名 数据文件 端口 ...

  4. JS 对输入框进行限制(常用的都有)

    文章来源 http://www.soso.io/article/24096.html 1.文本框只能输入数字代码(小数点也不能输入) 代码如下: <input οnkeyup="thi ...

  5. 【Spring注解驱动】(三)Servlet 3.0

    前言 今天是7.21日,终于是看完了..暑假在家学习是真的差点意思 1 Servlet 3.0简介 Servlet 2.0是在web.xml中配置servlet filter.listener.Dis ...

  6. React课堂笔记2

    一.JSX 1.1.什么是JSX JSX = JavaScript XML,这是React官方发明的一种JS语法(糖) 概念:JSX是 JavaScript XML(HTML)的缩写,表示在 JS 代 ...

  7. C++ 基于libbfd实现二进制加载器

    构建工具解析二进制文件,基于libbfd实现,提取符号和节 BFD库 文档参考: LIB BFD, the Binary File Descriptor Library BFD及Binary File ...

  8. RESTful API 为何成为顶流 API 架构风格?

    作者孙毅,API7.ai 技术工程师,Apache APISIX Committer 万物互联的世界充满着各式各样的 API ,如何统筹规范 API 至关重要.RESTful API 是目前世界上最流 ...

  9. 音视频通讯QoS技术及其演进

    利用多种算法和策略进行网络传输控制,最大限度满足弱网场景下的音视频用户体验. 良逸|技术作者 01 什么是QoS?音视频通讯QoS是哪一类? QoS(Quality of Service)是服务质量的 ...

  10. Eclipse中添加Shell脚本(如start.sh)

    Eclipse中添加Shell脚本(如start.sh)       使用eclipse时,我们有时候会在自己的工程文件下添加一些脚本(比如将Qt代码在eclipse中运行生成moc文件时,或者要拷贝 ...