首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python定义类方法的多种方法?

用Python定义类方法的多种方法?
EN

Stack Overflow用户
提问于 2012-10-21 23:47:05
回答 2查看 7.3K关注 0票数 4

在深入Python的过程中,马克·皮尔格林说:

定义类方法时,必须显式列出self作为每个方法的第一个参数。

然后,他在代码中给出了几个这样的例子:

代码语言:javascript
复制
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装饰器。其中一个例子是:

代码语言:javascript
复制
class Logger:
    @classmethod
    def debug(msg):
        print "DEBUG: " + msg

(注意,在self函数中没有debug参数)

使用self作为第一个参数和使用@classmethod装饰器来定义类方法有什么不同吗?如果不是,定义类方法的一种方法是否比另一种更常用/更首选?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-21 23:51:51

@classmethod与定义实例方法不同。使用@classmethod定义的函数接收类作为第一个参数,而不是接收特定实例的实例方法。有关更多信息,请参见Python here

票数 7
EN

Stack Overflow用户

发布于 2012-10-21 23:55:16

自我不是,也永远不会是含蓄的。

“自我不会变得含蓄。

自我表白是一件好事。它通过消除变量解析方式的歧义,使代码变得清晰。它还使功能和方法之间的差别很小。“

http://www.python.org/dev/peps/pep-3099/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13003358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档