专栏名称: 志军
分享Python相关技术干货,偶尔扯扯其它的
目录
今天看啥  ›  专栏  ›  志军

@classmethod与@staticmethod的区别

志军  · 公众号  · Python  · 2017-07-18 18:23
    

文章预览

题图:https://www.behance.net/AdamQuest Python面向对象编程中,类中定义的方法可以是 @classmethod 装饰的 类方法 ,也可以是 @staticmethod 装饰的 静态方法 ,用的最多的还是不带装饰器的 实例方法 ,如果把这几个方法放一块,对初学者来说无疑是一头雾水,那我们该如何正确地使用它们呢? 先来看一个简单示例: class A (object) :     def m1 (self, n) :        print( "self:" , self)     @classmethod     def m2 (cls, n) :        print( "cls:" , cls)     @staticmethod     def m3 (n) :         pass a = A() a.m1( 1 ) # self: < __main__.a object="" at=""/> A.m2( 1 ) # cls: A.m3( 1 ) 我在类中一共定义了3个方法,m1 是实例方法,第一个参数必须是 self(约定俗成的)。m2 是类方法,第一个参数必须是cls(同样 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览