Python面向对象详解(4-3)
【摘要】 Python面向对象详解(4-3)
目录
一.类中的私有函数和私有变量
1.什么是私有函数、私有变量?
- 无法被实例化后的对象调用的类中的函数与变量
- 类内部可以调用私有函数与变量
- 只希望类内部业务调用使用,不希望被使用者调用
- 我们可以把被实例化对象调用的函数和变量称为公用函数和公有变量,一般会把公有省略掉。
2.私有函数和私有变量的定义方法
- 在变量或函数前添加__(2个下横线),变量或函数名后边无需添加
- 如果左右都添加了下横线,那么它就成了类的内置函数的定义规范
3.实战
输出结果:
二 .Python类中的封装
其实python并没有封装这个功能,只是针对Python中某种业务场景的一种概念
1.python中的封装概念
- 将不对外的私有属性或方法通过可对外使用的函数而使用(类中定义私有的,只有类内部使用,外部无法访问)
- 这样做的主要原因:保护隐私,区分内外
封装的例子:
三.装饰器
1.什么是装饰器?
- 也是一种函数
- 可以接受函数作为参数可以返回函数
- 接收一个函数,内部对其处理然后返回一个新函数,动态的增强函数功能
- 比如将c函数在a函数中执行,在a函数中可以选择执行或不执行c函数,也可以对c函数的结果进行二次加工处理
2.装饰器的定义
3.装饰器的用法
将被调用的函数直接作为参数传入装饰器的外围函数括弧
将装饰器与被调用函数绑定在一起
@符号 + 装饰器函数放在被调用函数的上一行,被调用的函数正常定义,只需要直接调用被执行函数即可
4.实战
输出结果:
四.类的常用装饰器
- classmethod
- staticmethod
- property
1.classmethod(类方法)的功能
- 将类函数可以不经过实例化而直接被调用
2.classmethod的用法
- 用法:
- 参数介绍:
- cls替代了普通类函数中的self,变为cls,代表当前操作的是类
在实例化的过程中,Python会将self提前传入需要self函数的括弧中,所以我们在执行的时候并不需要传递,但如果没有实例化,所以Python没办法自动为我们添加self到需要的类函数中,于是就会报错,这时候如果不想通过实例化来调用类函数,装饰器classmethod就会派上用处了
3.staticmethod的功能
- 将类函数可以不经过实例化而直接被调用,被该装饰器调用的函数不允许传递self和cls参数,且因为没有self和cls参数而无法在该函数内调用其他类函数或类变量
4.staticmethod的用法
- 用法:
- 参数介绍:
- 函数体内无self或cls参数
5.property的功能
- 将一个方法转化为属性,使类函数的执行免去括弧,类似于调用属性(变量)
6.property的用法
- 用法:
- 参数介绍:无重要函数说明
- 对使用porperty装饰的函数,如果要修改变量就要使用@被property装饰的函数名.setter来修改
-
输出结果:
7.实战
输出结果:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)