首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

python classmethod

以前我一直不知道classmethod的用法,有它没它都是一样,举个例子 class A(object):       bar = 1       def foo(self):           print... 'foo'       @classmethod       def class_foo(cls):           print 'class_foo'           print cls.bar...           cls().foo() 上面代码如果添加了装饰器@classmethod  就这样来调用: A.class_foo() 如果没有装饰器就这样写 class A(object):  ...bar           self.foo()  a=A() a.class_foo() 其实看起来没多大差别,甚至没有变得更优雅,仿佛不知道是不是真有什么特殊效果,其实是有的.一般会有几种情况适合使用classmethod...装饰器  1某个类实例化会实例化太多的数据,而你只用某个方法用classmethod就可以绕过去  2当有两个类的时候,一个类只是懒得再写一遍某个方法,调用另外一个类的方法却又不想实例化,或者说只是想让代码看起来更好看

36020

为什么 classmethod 比 staticmethod 更受宠?

我们知道,classmethod 和 staticmethod 都可以作为函数的装饰器,都可用于不涉及类的成员变量的方法,但是你查一下 Python 标准库就会知道 classmethod 使用的次数(...相当于装饰器 classmethod。...代码的执行结果如下: 可以看出,StaticMethod 和 ClassMethod 的作用和标准库的效果是一样的,也可以看出 classmethod 和 staticmethod 的区别就在于 classmethod...最后的话 回答本文最初的问题,为什么 classmethod 更受标准库的宠爱?是因为 classmethod 可以取代 staticmethod 的作用,而反过来却不行。...也就是说凡是使用 staticmethod 的地方,把 staticmethod 换成 classmethod,然后把函数增加第一个参数 cls,后面调用的代码可以不变,反过来却不行,也就是说 classmethod

32250
领券