python中cls和self的功能讲解
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"python中cls和self的功能讲解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中cls和self的功能讲解"吧!一般
千家信息网最后更新 2025年12月03日python中cls和self的功能讲解
本篇内容主要讲解"python中cls和self的功能讲解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中cls和self的功能讲解"吧!
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。
而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。
这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。
class A(object): a = 'a' @staticmethod def foo1(name): print 'hello', name def foo2(self, name): print 'hello', name @classmethod def foo3(cls, name): print 'hello', name
首先定义一个类A,类A中有三个函数,foo1为静态函数,用@staticmethod装饰器装饰,这种方法与类有某种关系但不需要使用到实例或者类来参与。如下两种方法都可以正常输出,也就是说既可以作为类的方法使用,也可以作为类的实例的方法使用。
a = A()a.foo1('mamq') # 输出: hello mamqA.foo1('mamq')# 输出: hello mamqfoo2为正常的函数,是类的实例的函数,只能通过a调用。
a.foo2('mamq') # 输出: hello mamqA.foo2('mamq') # 报错: unbound method foo2() must be called with A instance as first argument (got str instance instead)foo3为类函数,cls作为第一个参数用来表示类本身. 在类方法中用到,类方法是只与类本身有关而与实例无关的方法。如下两种方法都可以正常输出。
a.foo3('mamq') # 输出: hello mamqA.foo3('mamq') # 输出: hello mamq但是通过例子发现staticmethod与classmethod的使用方法和输出结果相同,再看看这两种方法的区别。
既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢
从它们的使用上来看,
@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。
@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。
如果在@staticmethod中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。
而@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。
也就是说在classmethod中可以调用类中定义的其他方法、类的属性,但staticmethod只能通过A.a调用类的属性,但无法通过在该函数内部调用A.foo2()。修改上面的代码加以说明:
class A(object): a = 'a' @staticmethod def foo1(name): print 'hello', name print A.a # 正常 print A.foo2('mamq') # 报错: unbound method foo2() must be called with A instance as first argument (got str instance instead) def foo2(self, name): print 'hello', name @classmethod def foo3(cls, name): print 'hello', name print A.a print cls().foo2(name)到此,相信大家对"python中cls和self的功能讲解"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
方法
函数
输出
实例
参数
属性
类名
功能
对象
A.a
也就是
也就是说
代码
内容
有利
学习
实用
整洁
更深
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
有没有液压泵公开数据库
软件开发公司要注重什么
下列哪一项不是基因数据库
服务器后台测试
服务器硬盘灯黄灯
信息与服务器的数据库连接
东营mrp软件开发公司
麒麟操作系统arm服务器适配
适合网络安全的歌
济南有实力的存储服务器店面
广州互联网软件开发靠谱吗
河南云服务器租用
emerson服务器管理
数据库mysql是什么
选股软件开发
学生管理系统软件开发
数据库安全性两条准则
为何微信无法连接服务器
x79主板用的是服务器内存吗
河北电商软件开发哪家好
国家网络安全宣传周银行总结
pubg一直处于服务器状态
加盟天启网络技术有限公司
sun服务器 ok灯闪烁
外排 大数据库
电脑远程服务器安装教程
中兴网络技术工程师薪资
陕西数据网络技术服务五星服务
服务器怎么配公网ip
箱变网络安全设备有哪些