
Python 类中的普通函数、静态方法、类方法和实例方法的调用规范
发布日期:2021-05-07 17:48:54
浏览次数:27
分类:精选文章
本文共 1489 字,大约阅读时间需要 4 分钟。
Python 类中的普通函数、静态方法、类方法和实例方法的调用规范
文章目录
1. 代码
直接上代码:
class Test: def normal_function(): print('我是普通函数!') @staticmethod def static_method(): print('我是静态方法!') @classmethod def class_method(cls): print(f'我是{cls}的类方法!') def instance_method(self): print(f'我是{self}的实例方法!')t = Test()# 普通函数:只能通过类名调用,不用手动传参# t.normal_function()"""Traceback (most recent call last): File "test.py", line 19, int.normal_function()TypeError: normal_function() takes 0 positional arguments but 1 was given"""Test.normal_function()"""我是普通函数!"""# 静态方法:可以通过实例和类名调用,不用手动传参t.static_method()Test.static_method()"""我是静态方法!我是静态方法!"""# 类方法:可以通过实例和类名调用,自动传递类给 cls 形参# 注意:即使通过实例调用类方法,Python 自动传递的也是类,而不是实例t.class_method()Test.class_method()"""我是 的类方法!我是 的类方法!"""# 实例方法:# 通过实例调用,自动传递实例给 self 形参# 通过类调用,需要手动传递一个实例给 self 形参t.instance_method()Test.instance_method(t)"""我是<__main__.Test object at 0x00000189E6A3AC88>的实例方法!我是<__main__.Test object at 0x00000189E6A3AC88>的实例方法!"""# 通过类调用,如果不手动传递实例给 self 形参,会缺少参数的错误# Test.instance_method()"""Traceback (most recent call last): File "test.py", line 59, in Test.instance_method()TypeError: instance_method() missing 1 required positional argument: 'self'"""
2. 总结
总结如下:
- 普通函数:只能通过类调用。
- 静态方法:可以通过类和实例调用,在此过程中,
Python
不会自动传参,当然也不用手动传递类或者实例作为参数。 - 类方法:可以通过类和实例调用,
Python
会自动传递类给cls
形参。 - 实例方法:可以通过类和实例调用。通过实例调用时,
Python
会自动传递实例给self
形参;通过类调用时,需要手动传递一个实例给self
形参,否则会报错。
完成于 2019.01.18
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月22日 10时18分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
boot.img 解包与打包
2021-05-08
Android4.4 平板背光设置
2021-05-08
spring boot@Value和bean执行顺序问题
2021-05-08
codeforces The Eternal Immortality 题解
2021-05-08
蓝桥杯 历届试题 幸运数 (堆+DFS)
2021-05-08
微信js-sdk使用简述(分享,扫码功能等)
2021-05-08
selenium 的介绍和爬取 jd数据
2021-05-08
【分享-一键在线抠图】在线免费去除图片背景
2021-05-08
layui表格checkbox选择全选样式及功能
2021-05-08
mxsrvs支持thinkphp3.2伪静态
2021-05-08
mui HTML5 plus 下载文件
2021-05-08
环信SDK 踩坑记webIM篇(一)
2021-05-08
通信基础知识
2021-05-08
DSP开发板准备
2021-05-08
测试基本
2021-05-08
c++中istringstream及ostringstream超详细说明
2021-05-08
c++中ifstream及ofstream超详细说明
2021-05-08
c++中explicit和mutable关键字探究
2021-05-08
c语言结构体字节对齐详解
2021-05-08