首页 > 其他分享 >@staticmethod和@classmethod的用法

@staticmethod和@classmethod的用法

时间:2022-09-28 22:36:04浏览次数:45  
标签:调用 classmethod 用法 参数 staticmethod 类名 cls

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。

而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。

这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。

既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢:

从它们的使用上来看:

@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。

@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

  如果在@staticmethod中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。

  而@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。



标签:调用,classmethod,用法,参数,staticmethod,类名,cls
From: https://blog.51cto.com/u_472169/5721100

相关文章

  • Linux awk命令用法
    概述awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划......
  • SQL中limit的用法
    格式:select*fromtableNamelimiti,n#tableName:表名#i:为查询结果的索引值(默认从0开始),当i=0时可省略i#n:为查询结果返回的数量#i与n之间使用英文逗号","隔开#limit......
  • ffmpeg用法及命令使用总结
      一  用途1  视频格式转码转换  2  音频格式转码转换   https://blog.csdn.net/weixin_40855193/article/details/122903152   ffmpeg-......
  • python中sys.path.append('..')用法
    一般用处:import时,如果包不在同一个文件里,需要跨文件导入,则用sys.path.append('..')来更改导入的路径。例子:文件结构如图:主程序在code文件中,调用其他.py中的函数#mai......
  • isEmpty 和 isBlank 的用法区别
    也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在,comeon,让我们一起来探索......
  • 序列化类常用字段类和字段参数、序列化类高级用法之source、序列化类高级用法之定制序
    目录序列化类常用字段和字段参数常用字段类需要记住的字段类常用字段参数序列化类高级用法之source,修改序列化字段名字序列化类高级用法之定制序列化字段的俩种方式方式一......
  • 今日内容 序列化类的高级用法
    序列化类常用字段类和字段参数常用字段类型:字段字段构造方式BooleanFieldBooleanField()NullBooleanFieldNullBooleanField()CharFieldCharField(......
  • 【Django-rest-framework框架】第03回 序列化类字段与高级用法
    目录1.序列化类常用字段与字段参数1.1常用字段类型1.2选项参数1.3通用参数2.序列化类高级用法之sourse2.1source可以指定序列化表中得哪个字段2.2source如果是方......
  • np.shape()的用法
    np.shape(x):其中:x的取值为:0—表示行数、1—表示列数importnumpyasnpdata=np.arange(12).reshape(2,6)#生成数据并重组成2行六列print(data)cols=data.shape[......
  • StringBuilder的用法
    当我们要对字符串做多次变化时,我们可以考虑用StringBuilderStringBuildersb=newStringBuilder();sb.Append("111");//追加字符串sb.AppendLine("222");//追加一行字......