在django.utils.tree.py中:
def _new_instance(cls, children=None, connector=None, negated=False):
obj = Node(children, connector, negated)
obj.__class__ = cls
return obj
_new_instance = classmethod(_new_instance)
我不知道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')
>>> y1
y('xx')
>>> y2 = y.fromlist(range(3))
>>> y2
y('0,1,2')
现在,如果您子类化y
,则类方法将继续工作,例如:
>>> class k(y):
... def __repr__(self):
... return 'k(%r)' % self.s.upper()
...
>>> k1 = k.fromlist(['za','bu'])
>>> k1
k('ZA,BU')
问题内容: 我不太确定这是什么意思或在做什么,有人可以详细说明吗? 问题答案: 它接受发送者引用的对象,并尝试将其转换为Player类型。Java对象是强类型的,这意味着您必须声明对象的类型。 如果发件人引用的对象不能转换为Player对象,则将为InvalidCast抛出异常。
所以我找到了这段代码,我真的很想了解这段代码是如何工作的,以及在里面传递这个值的用法 "( )".
问题内容: 我试图进行搜索并弄清楚它是如何工作的,但是我很难找到一个解释。 如果我的变量类型为() 怎么办?我知道接口可以代表很多事情,但是他在这里发生的事情的高层概述是什么? 问题答案: 这是一个类型断言: 类型断言提供对接口值的基础具体值的访问。 https://tour.golang.org/methods/15 如果该断言不成立,则会引发恐慌。要测试该值是否为特定类型T,可以使用以下命令:
问题内容: 我正在尝试通过查看其代码来复制我进入gmail的邮件程序。我在多个源代码查看器中看到了很多: 3D是否是我不知道的某种邮件渲染方式? 问题答案: 这是一种称为“ quoted-printable ”的电子邮件编码系统,该系统允许将非ASCII字符表示为ASCII以便进行电子邮件传输。 在带引号的可打印格式中,任何非标准的电子邮件八位字节均以一个符号表示,后跟两个十六进制数字,代表该八位
风格: 日志消息:10-10 13:20:01.184:E/AndroidRuntime(1417):致命异常:main 10-10 13:20:01.184:E/AndroidRuntime(1417):android。看法WindowManager$BadTokenException:无法添加窗口--android令牌。应用程序。本地活动管理器$LocalActivityRecord@411e