Python的面向对象、Class 概念与使用

Class(类)的基本概念:

  • 类:将同一种具体事务的共同点抽象出来的表现,Python的类是一种可调用对象。
  • 类中定义的有方法,变量,数据结构。
  • 变量则是类属性本身是没有数据的,只有在实例化的时候将数据引入。
  • 方法就是函数;是操作变量引用的数据的代码,可以知道方法是操作数据的,由于类中不包含数据,所以类无法调用方法,只有实例化引入数据成为实例(也称为对象)才可以调用方法。

对象的由来:

对象(也称为实例)本身是没有方法的,对象引用的方法是在类中定义的也叫类函数,或者叫接口。

同属一类实例化的对象,具有相同的功能。

类的执行场景:

当定义一个类时,类中的代码是不会执行的,只有在实例化时才会执行。 实例化过程中,类的方法不会执行,只有当实例调用方法的时候才会执行。

类对象是可调用对象,实例对象则是可以调用其中的方法。

类间关系:

依赖:一个类的方法操作另一个类的对象,如果另外一个类的对象没有被实例化出来,这个类就无法执行。

聚合:类A的对象包含类B的对象

继承:描述特殊与一般关系

面向对象的模型机制的3个原则:

封装(package)

隐藏实现方案细节,将代码及其处理的数据绑定在一起的一种编程机制,用于保证程序和数据不受外部干扰且不会被误用。

继承(Inheritance)

通过继承,子类对象可以获得父类对象的属性,一个深度继承的子类继承了类层次中它的每个祖先的所有属性。 (超类、父类、基类)都是同一个概念

在子类中调用一个属性的时候,如果在本类中没有,就会一直向上找父类。

多态性(Polymorphism)

允许一个接口被多个通用的类动作使用的特性,具体使用哪个动作与应用场合相关,相当于一个接口多个方法。

概念理解:对于某一个类而言,当传递给它的是不同的数据,却能完成多钟不同的运算。为了实现同一个目的,而定义同一个接口,背后却有多种不同的实现。 能够自动判断调用哪种实现的这种机制就叫做多态。

作用:降低程序的复杂性

开始一个类程序:

类方法中的这个self是用于标识实例本身的。 任何一个类方法都应该以self开始。

通过实例调用方法相当于调用所属类的方法来处理当前实例

In [16]: ins1.setdata(‘hello python class‘)

In [17]: ins1.printdata()
hello python class

同等于这样写

In [20]: TestClass.setdata(ins1,‘aabbcc111222333‘)

In [21]: TestClass.printdata(ins1)
aabbcc111222333

在setdata方法调用之前,MyClass类不会把name属性附加到实例ins1上,当然也可以重载__init__创建构造器直接为实例提供。

Python 构造函数(别名:构造方法、构造器)

在Python中每一个类都有一个构造器方法__init__,构造方法会在实例化时从类名接受一个参数传给类方法,这样就可以直接在类初始化时给方法传参。

构造器在构造实例时传参,直接构造实例属性。

构造器是创建实例属性最便捷的方式

__varname__ : 这类方法在某种场景下,Python解释器会自动调用它们。

当执行 a + b 程序会自动调用 a.__add__(b)

当执行 l2 = [1,2,3] 程序会自动调用 list.__init__()

析构:用于销毁一个实例,解释器会自动垃圾回收,所以一般很少用析构函数。

获取类中的所有可用属性和可用方法,可以使用__dict__类的字典属性,或者内置函数dir。

-------------------------------------------------------------------------------------------

获取实例属性和方法

方法的可用变量

实例变量:指定变量名称及实例自身进行引用 self.变量名

局部变量:方法内部创建的变量,可直接使用

类变量(也称静态变量):通过指定变量名与类名进行引用

全局变量:直接使用


类的继承

继承描述了基类的属性如何"遗传"给子类,子类可以继承它的基类的任何属性,包括数据属性和方法,一个未指定基类的类,其默认有一个名为Object的基类,Python允许多重继承能并行继承多个父类。

实现子类继承构造方法

Python中几乎所有属性的获取都可以使用 "object.attribute",的格式。

此表达式会在Python中启动搜索—— ——搜索连续的树

Class 语句会产生一个类对象,对Class的调用会创建实例,实例会自动连接至创建了此实例的类。

类连接至其超类的方式

继承就是由下至上,由左至右搜索此树来寻找属性名称所出现的最低的位置。

继承方法的专用化

继承会先在子类寻找变量名,然后才查找超类,因此,子类可以对超类的属性覆盖来取代继承而来的方法。也可以通过已覆盖的方法回调超类来扩展超类的方法

类、实例和其他对象的内建函数

issubclass()

布尔函数,判断一个类是否是另一个类的子类

In [38]: issubclass(Two_Class,One_Class)
Out[38]: True

isinstance

判断一个对象是否为一个类的实例

In [42]: isinstance(ins2,Two_Class)
Out[42]: True

hasattr()

判断一个对象(实例)是否拥有指定的属性

In [46]: hasattr(ins2,‘data_one‘)
Out[46]: True

In [47]: hasattr(ins2,‘data_two‘)
Out[47]: True
时间: 2024-08-29 13:37:32

Python的面向对象、Class 概念与使用的相关文章

Python 3面向对象编程

这篇是计算机类的优质预售推荐>>>><Python 3面向对象编程> 编辑推荐 本书不是Python 的入门书籍,适合具有Python 基础经验的开发人员阅读.如果你拥有其他面向对象语言的经验,你会更容易理解本书的内容. 内容简介 Python 是一种面向对象的解释型语言,面向对象是其非常重要的特性.本书通过Python 的数据结构.语法.设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则.本书不是Python 的入门书籍,

Python -面向对象(一 基本概念)

一 Python简单介绍 Python是一个可移植的面向对象的脚本语言. Python尽管是一个脚本语言,但也是一个全然面向对象的语言. 由于它设计之初把易用性做为很重要的一个考量标准,所以用起来很简洁,优美(语法很灵活).所以使用Python能够高速地编写出可执行代码.与C/C++相比.Python程序的执行速度比較慢,一门语言既然能够生存下来.就有它自己的原因,Python语言也一样. 当今的计算机处理速度已经很快.对某些任务来说.执行速度并非首要考虑的因素.比方说为了实现数据库訪问的自己主

Python基础之面向对象基本概念

面向过程和面向对象概念 过程和函数:过程类似于函数,只能执行,但是没有返回结果:函数不仅能执行,还能返回结果. 面向过程和面向对象 基本概念 面向过程-怎么做 把完成某一个需求的所有步骤从头到尾逐步实现: 根据开发需求,将某些功能独立的代码封装成一个又一个函数: 最后完成的代码,就是顺序的调用不同的函数. 特点 注重步骤和过程,不注重职责分工: 如果复杂需求,代码会变得很复杂: 开发复杂项目,没有固定的套路,开发难度很大. 面向对象-谁来做 相比较函数,面向对象是更大的封装,根据职责在一个对象中

python的面向对象的特性(继承、封装、多态)

创建自已对象就python非常核心的概念,事实上,python被称为面向对象语言,本章会介绍如何创建对象.以及面向对象的概念:继承.封装.多态. 多态: 可对不同类的对象使用同样的操作. 封装:对外部世界隐藏对象的工作细节. 继承:以普通的类为基础建立专门的类对象. 多态 面向对象程序设计最有趣的特性是多太,它是是让大多数人犯晕的特性.所以,先来介绍这个. 多态意思是"有多种形式".多态意味着就算不知道变量所引用的对象类是什么,还是能对它进行操作,而它也会根据对象(或类)类型的不同而表

python之面向对象(软件开发过程、反射)

一.面向对象软件开发的过程 面向对象的软件工程包括下面几个部: 1.面向对象分析(object oriented analysis ,OOA) 软件工程中的系统分析阶段,要求分析员和用户结合在一起,对用户的需求做出精确的分析和明确的表述,从大的方面解析软件系统应该做什么,而不是怎么去做.面向对象的分析要按照面向对象的概念和方法,在对任务的分析中,从客观存在的事物和事物之间的关系,贵南出有关的对象(对象的'特征'和'技能')以及对象之间的联系,并将具有相同属性和行为的对象用一个类class来标识.

Python之面向对象与类

本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对象的概念 1. "面向对象(OOP)"是什么? 简单点说,"面向对象"是一种编程范式,而编程范式是按照不同的编程特点总结出来的编程方式.俗话说,条条大路通罗马,也就说我们使用不同的方法都可以达到最终的目的,但是有些办法比较快速.安全且效果好,有些方法则效率低下且效果不尽人意.同样,编程也是为了解决问题,

Python-面向对象(三 元编程)

译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也高达6

what&#39;s the python之面向对象

编程分为面向过程和面向对象,首先我们要了解什么是面向对象. 面向对象 面向过程就是我们之前学的内容,主要是函数式,其核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的

python 初识面向对象

一.初识面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自

My way to Python - Day05 - 面向对象-思维导图

My way to Python - Day05 - 面向对象 思维导图