在深入Python的过程中,马克·皮尔格林说:
定义类方法时,必须显式列出self作为每个方法的第一个参数。
然后,他在代码中给出了几个这样的例子:
def clear(self): self.data.clear()
def copy(self):
if self.__class__ is UserDict:
return UserDict(self.data)
import copy
return copy.copy(self)当我在线浏览一些Python代码时,我遇到了@classmethod装饰器。其中一个例子是:
class Logger:
@classmethod
def debug(msg):
print "DEBUG: " + msg(注意,在self函数中没有debug参数)
使用self作为第一个参数和使用@classmethod装饰器来定义类方法有什么不同吗?如果不是,定义类方法的一种方法是否比另一种更常用/更首选?
发布于 2012-10-21 23:51:51
@classmethod与定义实例方法不同。使用@classmethod定义的函数接收类作为第一个参数,而不是接收特定实例的实例方法。有关更多信息,请参见Python here。
发布于 2012-10-21 23:55:16
自我不是,也永远不会是含蓄的。
“自我不会变得含蓄。
自我表白是一件好事。它通过消除变量解析方式的歧义,使代码变得清晰。它还使功能和方法之间的差别很小。“
https://stackoverflow.com/questions/13003358
复制相似问题