python面向对象详细版
2021/7/31 14:07:39
本文主要是介绍python面向对象详细版,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
python面向对象
- 面向对象是一种编程方式,此方式是基于对 类 和 对象 的使用。
- 类 是一个模板,模板中有多个“函数”供使用。
- 对象是根据模板创建的实例,实例用于被包装在类中的函数。
- 面向对象三个特性:封装、继承、多态。
类包含的部分:
类的组成部分可以分为三大类:字段、方法和属性
字段中可以分为:普通字段和静态字段
方法可以分类:普通方法、类方法、静态方法
属性:普通属性
1.字段
普通字段属于对象
静态字段属于类
这两个字段最本质的区别就是在内存中保存的位置不同
静态字段在内存中只保存一份
普通字段在每个对象中都要保存一份
2.方法
方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,只是调用方式不一样
- 普通方法:由对象调用,至少一个self参数,执行普通方法时,自动将调用方法的对象赋值给self。
- 类方法:由类调用,至少一个cls参数,执行类方法时,自动将调用该方法的类复制给cls。
- 静态方法:由类调用,无默认参数。
相同点:对于所有的方法而言,均属于类(非对象)中,所以,在内存中只保存一份。
不同点:方法调用者不同、调用方法时自动传入的参数不同。
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面向对象详细版的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享