栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

classmethod在此代码中做什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

classmethod在此代码中做什么?

classmethod
是一个装饰器,包装了一个函数,您可以在类或(等效地)其实例上调用结果对象:

>>> class x(object):...   def c1(*args): print 'c1', args...   c1 = classmethod(c1)...   @classmethod...   def c2(*args): print 'c2', args... >>> inst = x()>>> x.c1()c1 (<class '__main__.x'>,)>>> x.c2()c2 (<class '__main__.x'>,)>>> inst.c1()c1 (<class '__main__.x'>,)>>> inst.c2()c2 (<class '__main__.x'>,)

如您所见,无论是直接定义它还是使用装饰器语法定义它,以及在类或实例上调用它,

classmethod
总是会将该类作为其第一个参数。

classmethod的主要用途之一是定义 替代构造函数

>>> class y(object):...   def __init__(self, astring):...     self.s = astring...   @classmethod...   def fromlist(cls, alist):...     x = cls('')...     x.s = ','.join(str(s) for s in alist)...     return x...   def __repr__(self):...     return 'y(%r)' % self.s...>>> y1 = y('xx')>>> y1y('xx')>>> y2 = y.fromlist(range(3))>>> y2y('0,1,2')

现在,如果您子类化

y
,则类方法将继续工作,例如:

>>> class k(y):...   def __repr__(self):...     return 'k(%r)' % self.s.upper()...>>> k1 = k.fromlist(['za','bu'])>>> k1k('ZA,BU')


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/623509.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号