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

田妈
• 阅读 3480

一、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                 # 类
<class '__main__.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的错误:

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

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

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


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

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

❤ thanks for watching, keep on updating...

点赞
收藏
评论区
推荐文章
半臻 半臻
3年前
Python基础6——面向对象
14面向对象14.1面向对象基础​面向对象是一种编程思想,处理面向对象编程以外,还有面向过程编程​三大特征:1.封装2.继承3.多态​面向过程与面向对象的区别1.面向过程:自己动手洗衣服,拧衣服、晾衣服2.面向对象:构造一个洗衣机对象,让洗衣机对象完成14.2类和对象​类:相同属性和功能的一类事物。​人是一个类,张三(
菜园前端 菜园前端
2年前
什么是面向对象编程?
原文链接:什么是面向对象编程?面向对象程序设计(ObjectOrientedProgramming,OOP)是一种计算机编程架构,也可以理解为是一种编程的思想。面向对象程序设计的核心就是对象和类,对象也是类的实例化,类是对现实对象的抽象。对象间通过消息传递
Bill78 Bill78
4年前
Python入门之类(class)
Python3面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对
Bill78 Bill78
4年前
Python入门之类(class)
Python3面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对
Easter79 Easter79
3年前
Spring中的AOP(一)——AspectJ的基本使用
AOP(AspectOrientProgramming),也就是面向切面编程,作为面向对象编程的一种补充,当前已经成为一种比较成熟的编程思想,其实AOP问世的时间并不长,甚至在国内的翻译还不太统一(另有人翻译为“面向方面编程”)。AOP和OOP(ObjectOrientProgramming,面向对象编程)互为补充,OOP将程序分解成各个层次的对象
Wesley13 Wesley13
3年前
JAVA类和对象创建
!(https://oscimg.oschina.net/oscnet/22ac82441e269125878e950d13f2825b44f.jpg)  面向对象  学习目标:  理解面向对象的编程思想  理解类与对象的关系  如何创建类与对象  方法重载  一:什么是面向对象编程(OOP)  面向对象编程(Object
Stella981 Stella981
3年前
Javascript 面向对象编程
Javascript面向对象编程(一):封装Javascript是一种基于对象(objectbased)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。那么,如果我们要把"属性
小万哥 小万哥
1年前
C# 面向对象编程解析:优势、类和对象、类成员详解
C什么是面向对象编程?OOP代表面向对象编程。过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。面向对象编程相对于过程式编程具有几个优势:OOP执行速度更快,更容易执行OOP为程序提供了清晰的结构OOP有助于保持C代码
小万哥 小万哥
1年前
深入解析 Java 面向对象编程与类属性应用
Java面向对象编程面向对象编程(OOP)是一种编程范式,它将程序组织成对象。对象包含数据和操作数据的方法。OOP的优势:更快、更易于执行提供清晰的结构代码更易于维护、修改和调试提高代码重用性减少开发时间类和对象类是对象的模板,它定义了对象的属性和方法。对
小万哥 小万哥
11个月前
Kotlin 面向对象编程 (OOP) 基础:类、对象与继承详解
面向对象编程(OOP)是一种编程范式,它通过创建包含数据和方法的对象来组织代码。相较于过程式编程,OOP提供了更快更清晰的结构,有助于遵守DRY(Don&39;tRepeatYourself)原则,使代码更易于维护和扩展。在Kotlin中,类和对象是OOP的核心。类作为对象的模板,定义了对象的行为和状态;对象则是类的具体实例。例如,Car类可以定义汽车的品牌、型号等属性,以及如驾驶和刹车等功能。通过构造函数可以快速初始化对象的属性。此外,Kotlin支持继承机制,子类可以从父类继承属性和方法,促进代码重用。