类函数、成员函数、静态函数、抽象函数、方法伪装属性本篇博客是滚雪球学 Python 第二轮的最后一篇博客,我们将内容继续提升到面向对象部分,为你补充类里面的一些装饰器 , 学习之后,希望你的 Python 基础知识可以更上一层楼 。
先直接看代码,再对代码内容进行分析与学习 。
首先要掌握的是类函数的定义格式 , 在普通函数的前面添加装饰器@classmethod,该函数就会转换为类函数 , 同时函数的第一个参数默认是cls,该变量名可以任意,建议使用成cls , 这个是程序员之间的约定 。
在 Python 中,大部分@classmethod装饰的函数末尾都是return cls(XXX),return XXX.__new__ ()也就是@classmethod的一个主要用途是作为构造函数 。
先掌握一个概念,静态函数不属于它所在的那个类,它是独立于类的一个单独函数,只是寄存在一个类名下,先建立这个基本概念,后面学起来就简单很多了 。
在同一个类中,调用静态方法,使用类名.函数名()的格式 。
先创建一个父类,其中包含两个静态函数与一个类函数 。
再编写一个S类继承自F类:
测试之后,基本结论如下:
如果在子类中覆盖了父类的静态函数,那调用时使用的是子类自己的静态函数,
如果在子类中没有覆盖父类的静态函数,那调用时使用的是父类的静态函数,
类函数同样遵循该规则 。
如果希望在子类中调用父类的属性或者函数 , 请使用父类名.的形式实现 。
被@abstractmethod装饰的函数为抽象函数,含抽象函数的类不能实例化,继承了含抽象函数的子类必须覆盖所有抽象函数装饰的方法,未被装饰的可以不重写 。
抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 , 实现代码如下:
抽象基类中学习还需要了解元类相关知识,在第三轮滚雪球学 Python 中将为你展开这部分内容 。
在 Python 面向对象的编码过程中,对象.属性来获取属性的值 , 使用对象.方法()来调用方法,通过装饰器@property可以将一个方法伪装成属性 , 从而使用对象.方法没有括号的形式调用 。代码非常简单:
这种写法最直接的应用,就是将部分属性变成只读属性,例如,上述代码,你无法通过下述代码对name进行修改 。
如果希望方法伪装的属性具备修改和删除功能,需要参考下述代码:
上述代码在将name方法伪装成属性之后,可以通过@name.setter和@name.deleter对同名的name方法进行装饰 , 从而实现了修改与删除功能 。
所以一般使用方法伪装属性的步骤是:
如果你觉得这个比较麻烦,还存在一种方法伪装属性的方式 。使用property函数,原型如下
通过上述函数将方法伪装成属性的代码为:
滚雪球学 Python 第二轮 15 篇博客在一次结束了,下一轮将在 4 月中旬再次开启,学 Python 我们一直在路上,希望本系列的课程对你的 Python 学习有所助力 。
python成员函数如何调用静态函数两个方法python的成员函数:
1.Python中静态方法的作用就是保证方法里面所使用的属性和值都是静态不变的python的成员函数 , 使用静态方法一般都不会定义参数,因为静态方法只能够使用静态属性 。python内定义静态方法的方式为在定义函数的代码前加上一个@staticmethod这样的标识符 。
2.一般的类方法在定义之后需要实例化这个类才能够通过类对象点方法的形式去调用它 , 但是静态方法可以直接通过类名去调用 。因为为静态方法就相当于是一个暴露在外部的自定义函数一样,只需要使用类名找到它就可以使用了 。同时静态方法也能够去用实例化之后的类对象对调用 。
在Python中使用字符串调用函数已有字符串形式的函数名称 , 那么如何调用这个函数呢?
通过调用内置函数locals()和globals()返回的字典对象,就可以可以获得名称与对象的映射关系 。其中,locals()仅在全局范围内调用时可以获得函数对象 。我们来看以下的例子 。
需要注意的是,使用上述方法通过字符串调用函数时,为了系统的安全,防止执行任意函数,需要对函数名做一些处理,也就是使用统一的前缀为这些函数命名 。例如在上述例子中 , 使用前缀cmd_ 函数名的形式定义函数(cmd_help,cmd_sum) 。
在传入函数名字符串时,只传入函数名的后半部分(如"help","sum"),由程序添加前缀后组成完整的函数名,再调用该函数 。
对于类的成员函数 , 则可以使用getattr()获得类成员函数 。
上述代码通过字符串调用了类成员函数,与前一段代码执行的结果相同 。
此外,还可以使用字典将字符串与函数对应起来调用,缺点就是每增加一个函数需要相应在字典对象中添加相应的键值 , 增加代码维护工作量 。
以上代码在Python 3.6以上运行通过 。
python class成员函数没有实现pythonclass成员函数没有实现是因为python的成员函数:
def是定义函数,就是封装一段代码,执行特定功能 。class是定义对象,对象有自己python的成员函数的成员变量和成员函数 。
【python的成员函数 python成员运算】关于python的成员函数和python成员运算的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- pdf怎么把两个文档合并成一个pdf文件,怎么把pdf的两个文档合二为一
- sap预算下达,SAP预算下达
- 汉堡经营游戏活动,汉堡经营游戏活动策划
- 近身格斗手机游戏,近身格斗 视频
- php获取数据列表 php获取数据类型
- 关于jquery去掉某个tr的信息
- 小米手机扫描文档转pdf,小米手机扫描文档转文字
- 直播运营张鑫,直播运营
- linux命令描述大小写 linux小写变大写命令