Python教程

python面向对象详细版

本文主要是介绍python面向对象详细版,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python面向对象

  1. 面向对象是一种编程方式,此方式是基于对 对象 的使用。
  2. 是一个模板,模板中有多个“函数”供使用。
  3. 对象是根据模板创建的实例,实例用于被包装在类中的函数。
  4. 面向对象三个特性:封装、继承、多态。

类包含的部分
类的组成部分可以分为三大类:字段、方法和属性
字段中可以分为:普通字段和静态字段
方法可以分类:普通方法、类方法、静态方法
属性:普通属性

1.字段

普通字段属于对象
静态字段属于
这两个字段最本质的区别就是在内存中保存的位置不同
在这里插入图片描述静态字段在内存中只保存一份
普通字段在每个对象中都要保存一份

2.方法

方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,只是调用方式不一样

  1. 普通方法:由对象调用,至少一个self参数,执行普通方法时,自动将调用方法的对象赋值给self。
  2. 类方法:由类调用,至少一个cls参数,执行类方法时,自动将调用该方法的类复制给cls。
  3. 静态方法:由类调用,无默认参数。

在这里插入图片描述
相同点:对于所有的方法而言,均属于类(非对象)中,所以,在内存中只保存一份。
不同点:方法调用者不同、调用方法时自动传入的参数不同。

3.属性

python中的属性就是普通方法的变种。
1.属性的基本使用
在这里插入图片描述
属性的定义和调用需要注意以下几点:
定义时,在普通方法的基础上添加@property装饰器,属性仅有一个self参数
调用时,无需括号
方法:foo_obj.func()
属性:foo_obj.prop
注意:属性存在的意义:访问属性时可以制造出和访问字段完全相同的假象

2.属性的两种定义方法
2.1 装饰器:在方法上应用装饰器(见上例)
2.2 静态字段:在类中定义值为property对象的静态字段
在这里插入图片描述
此外,还有三种@property装饰器

在这里插入图片描述
实例:
在这里插入图片描述
property的构造方法中有个四个参数

第一个参数是方法名,调用 对象.属性 时自动触发执行方法
第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法
第三个参数是方法名,调用 del 对象.属性 时自动触发执行方法
第四个参数是字符串,调用 对象.属性.doc ,此参数是该属性的描述信息

类成员的修饰符

类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式:

公有成员,在任何地方都能访问
私有成员,只有在类的内部才能方法

私有成员与公有成员的定义不同

在这里插入图片描述
私有成员命名时,前两个字符是下划线。

私有成员和公有成员的访问限制不同

静态字段
公有静态字段:类可以访问,类内部可以访问,派生类可以访问
私有静态字段:仅类的内部可以访问
在这里插入图片描述
在这里插入图片描述普通字段
公有普通字段:对象可以访问,类内部可以访问,派生类也可以访问
私有普通属性:仅类内部可以访问
在这里插入图片描述
在这里插入图片描述
方法、属性的访问与上述方法类似,即:私有成员只能在类内部使用

类的特殊成员

上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段、方法和属性三大类成员,并且成员名前如果有两个下划线,则表示该成员是私有成员,私有成员只能由类内部调用。无论人或事物往往都有不按套路出牌的情况,Python的类成员也是如此,存在着一些具有特殊含义的成员,详情如下:

1.__doc__

表示类的描述信息
在这里插入图片描述

2.__module__和__class__
__module__表示当前操作的对象在哪个模块
__class__表示当前操作的类的对象是什么
3.__init__
构造方法,通过类创建对象时,自动触发执行
4.__del__
析构方法,当对象在内存中被释放时,自动触发执行。

注:此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。
5.__call__
对象后面加括号,触发执行。

注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()

在这里插入图片描述

6.__dict__
类或对象中的所有成员

在这里插入图片描述

7.__str__
如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。

在这里插入图片描述

8. __getitem__、__setitem__、__delitem__
用于索引操作,如字典。以上分别表示获取、设置、删除数据

在这里插入图片描述

9. __iter__ 
用于迭代器,之所以列表、字典、元组可以进行for循环,是因为类型内部定义了 __iter__  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于python面向对象详细版的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!