资讯专栏INFORMATION COLUMN

Python面向对象编程 - 类和实例

Elle / 3218人阅读

摘要:一面向对象编程。是一门面向对象的编程语言,通过对象实现对方法的调用。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。对于面向对象语言,重要的概念是类和实例。


一、preface

面向对象编程OOP:object oriented programming。
OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。Python是一门面向对象的编程语言,通过对象实现对方法的调用。

面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

对于面向对象语言,重要的概念是类和实例。类是一个抽象的模板,实例是根据类模板创建出的一个对象。
在python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义对象数据类型就是面向对象中类的概念,根据类来创建对象。
它的三大特点就是:封装、继承、多态。

二、类class

类是一个抽象的模板,是一种数据结构。

语法:
class class_name: pass
class class_name(object): pass

说明:
class是关键字,类。类名class_name通常以大写字母开头。
object表示该类是从哪个类继承而来。事实上object是所有类都会继承的基类,一般不会显示写出。(我一般会习惯写上)

比如学生,一个班级会有很多个学生,那对于学生这个集合,会有很多共同的地方,比如说学生的姓名、学号、年级、专业、成绩等一系列共同的特性,那么我们就可以把这些都抽象成一个学生Student类。如下:

class Student(object):
    pass

上面例子,我们先用pass进行演示,表示什么都不操作。

三、实例instance

通过类可以创建Student实例,方法如下:

>>> bart = Student()        # 变量bart指向的是一个Student的实例 
>>> bart
<__main__.Student object at 0x0086F710> # 类object 实例的内存地址
>>> Student                 # 类
     # 返回的是Student 类的属性 class

对类的实例,可以进行属性的绑定。

属性就是一个对象的数据或者函数元素。比如Student类中学生的姓名、学号等信息。

通过“据点属性标识法”来访问。

python是动态语言,根据类创建的实例可以任意绑定属性。给实例绑定属性的方法是通过实例变量,或者通过self变量。

>>> bart.name = "xlp"        # 动态给变量绑定属性
>>> bart.name
"xlp"

那属性是如何实现绑定的呢?__init__()实例方法。
当一个实例被创建后,Python会检查是否实现了__init__()方法,如果没有定义该方法,对实例不会施加任何特定的操作,任何需要特殊的操作,需要自己去自定义该方法。即__init()__会被自动调用,不管是默认的还是自定义的。

__init__(self)

1、 该方法的第一个参数永远都是selfself指向创建的实例本身;

2、 通过该方法,把属性绑定到self指向的实例上;

3、 __init__()方法返回None

4、 该方法中,可以设置默认参数和位置参数。创建实例时,不能传入空的参数,必须传入与方法匹配的参数,但self不需要传入,默认参数根据需要进行传入与否。

针对第三点:因为实例对象是在自动化创建实例调用后返回的,如果定义了构造器__init__(),它不应该返回任何对象,否则就有可能发生冲突,只能返回实例。试图返回任何非None的其他对象会报TypeError的错误:

查看实例属性:dir()
通过内建函数dir(class_name)可以查看类的属性,例如:dir(Student1)。也可以访问实例的属性。自己尝试打印出来看看~

属性这一块还有点玄幻:类属性和实例属性。下一小节一起来看看吧~
然后面向过程其实也不太记得了,如果有懂的小伙伴可以留言哦~ ~ ~


如果觉得文章有丢丢用处,动动小指,点个赞吧!

如果哪里写的有问题,或者有更好的方式,cue我一下

❤ thanks for watching, keep on updating...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42519.html

相关文章

  • SICP Python 描述 2.6 实现类和对象

    摘要:以这种方式实现对象系统的目的是展示使用对象隐喻并不需要特殊的编程语言。我们的实现并不遵循类型系统的明确规定。反之,它为实现对象隐喻的核心功能而设计。是分发字典,它响应消息和。 2.6 实现类和对象 来源:2.6 Implementing Classes and Objects 译者:飞龙 协议:CC BY-NC-SA 4.0 在使用面向对象编程范式时,我们使用对象隐喻来指导程序...

    chenjiang3 评论0 收藏0
  • [Python3]Python面向对象的程序设计

    摘要:于发表了著名的有害论的论文引起了长达数年的论战并由此产生了结构化程序设计方法。到现在为止面向对象已经成为了主流的开发思想。面向对象的程序设计优点解决了程序的扩展性。 [Python3]Python面向对象的程序设计 一、面向对象的程序设计的由来 1.第一阶段:面向机器,1940年以前 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数据。 简单来...

    OpenDigg 评论0 收藏0
  • PHP设计模式(二):抽象类和接口

    摘要:在设计模式中,抽象类不能够被实例化初始化,但是可以依靠具体类的继承来实现。对于大型项目来说,对象都是由基本的抽象类继承实现,而这些类的方法通常都由接口来定义。 原文地址:PHP设计模式(二):抽象类和接口 Introduction 对于编程来说,对事物的抽象是一个老生常谈的话题,抽象问题更利于面向对象编程以及程序设计模式。和C/C++,Java,Python等语言一样,PHP也支持面向...

    xialong 评论0 收藏0
  • python大佬养成计划--面向对象

    摘要:的名字并不是规定死的因为是形参,也可以使用,但是最好还是按照约定是用。类的私有方法两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能在类地外部调用。。 类 面向对象编程具有三大特性:多态、继承、封装定义:是一个抽象的模板对象:类实例化属性:这个类实例化后的对象具有的特征方法:类对象可以执行的函数 类的定义 class 类名 class People(object): ...

    hzc 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<