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


1、preface

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

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

对于面向对象语言,重要的概念是类和实例。类是一个抽象的模板,实例是根据类模板建立出的一个对象。
在python中,全部数据类型均可以视为对象,固然也能够自定义对象。自定义对象数据类型就是面向对象中类的概念,根据类来建立对象。
它的三大特色就是:封装、继承、多态。编程

2、类class

  • 类是一个抽象的模板,是一种数据结构。
  • 语法:
    class class_name: pass
    class class_name(object): pass
  • 说明:
    class是关键字,类。类名class_name一般以大写字母开头。
    object表示该类是从哪一个类继承而来。事实上object是全部类都会继承的基类,通常不会显示写出。(我通常会习惯写上)

好比学生,一个班级会有不少个学生,那对于学生这个集合,会有不少共同的地方,好比说学生的姓名、学号、年级、专业、成绩等一系列共同的特性,那么咱们就能够把这些都抽象成一个学生Student类。以下:数据结构

class Student(object):
    pass

上面例子,咱们先用pass进行演示,表示什么都不操做。编程语言

3、实例instance

经过类能够建立Student实例,方法以下:函数

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

对类的实例,能够进行属性的绑定。spa

  • 属性就是一个对象的数据或者函数元素。好比Student类中学生的姓名、学号等信息。
  • 经过“据点属性标识法”来访问。
  • python是动态语言,根据类建立的实例能够任意绑定属性。给实例绑定属性的方法是经过实例变量,或者经过self变量。
>>> bart.name = 'xlp'        # 动态给变量绑定属性
>>> bart.name
'xlp'

那属性是如何实现绑定的呢?__init__()实例方法。
当一个实例被建立后,Python会检查是否实现了__init__()方法,若是没有定义该方法,对实例不会施加任何特定的操做,任何须要特殊的操做,须要本身去自定义该方法。即__init()__会被自动调用,不论是默认的仍是自定义的。设计

  • __init__(self)
  • 一、 该方法的第一个参数永远都是selfself指向建立的实例自己;
  • 二、 经过该方法,把属性绑定到self指向的实例上;
  • 三、 __init__()方法返回None
  • 四、 该方法中,能够设置默认参数和位置参数。建立实例时,不能传入空的参数,必须传入与方法匹配的参数,但self不须要传入,默认参数根据须要进行传入与否。

针对第三点:由于实例对象是在自动化建立实例调用后返回的,若是定义了构造器__init__(),它不该该返回任何对象,不然就有可能发生冲突,只能返回实例。试图返回任何非None的其余对象会报TypeError的错误:code

clipboard.png

查看实例属性:dir()
经过内建函数dir(class_name)能够查看类的属性,例如:dir(Student1)。也能够访问实例的属性。本身尝试打印出来看看~对象

属性这一块还有点玄幻:类属性和实例属性。下一小节一块儿来看看吧~
而后面向过程其实也不太记得了,若是有懂的小伙伴能够留言哦~ ~ ~继承


若是以为文章有丢丢用处,动动小指,点个赞吧!

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

❤ thanks for watching, keep on updating...

相关文章
相关标签/搜索