【发布时间】:2012-10-21 23:47:05
【问题描述】:
在 Dive Into Python 中,Mark Pilgrim 说:
当定义你的类方法时,你必须显式地列出 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
(注意debug函数中没有self参数)
使用self作为第一个参数和使用@classmethod装饰器定义类方法有什么区别吗?如果不是,那么定义类方法的一种方法是否比另一种更常用/更受欢迎?
【问题讨论】:
-
self表示对类实例的引用。见stackoverflow.com/questions/38238/…