Python classmethod装饰器原理及用法解析
英文文档:
classmethod(function)
Returnaclassmethodforfunction.
Aclassmethodreceivestheclassasimplicitfirstargument,justlikeaninstancemethodreceivestheinstance.Todeclareaclassmethod,usethisidiom:
classC:
@classmethod
deff(cls,arg1,arg2,...):...
The@classmethodformisafunctiondecorator–seethedescriptionoffunctiondefinitionsinFunctiondefinitionsfordetails.
Itcanbecalledeitherontheclass(suchasC.f())oronaninstance(suchasC().f()).Theinstanceisignoredexceptforitsclass.Ifaclassmethodiscalledforaderivedclass,thederivedclassobjectispassedastheimpliedfirstargument.
ClassmethodsaredifferentthanC++orJavastaticmethods.Ifyouwantthose,seestaticmethod()inthissection.
标记方法为类方法的装饰器
说明:
1.classmethod是一个装饰器函数,用来标示一个方法为类方法
2.类方法的第一个参数是类对象参数,在方法被调用的时候自动将类对象传入,参数名称约定为cls
3.如果一个方法被标示为类方法,则该方法可被类对象调用(如C.f()),也可以被类的实例对象调用(如C().f())
>>>classC: @classmethod deff(cls,arg1): print(cls) print(arg1) >>>C.f('类对象调用类方法')类对象调用类方法 >>>c=C() >>>c.f('类实例对象调用类方法') 类实例对象调用类方法
4.类被继承后,子类也可以调用父类的类方法,但是第一个参数传入的是子类的类对象
>>>classD(C): pass >>>D.f("子类的类对象调用父类的类方法")子类的类对象调用父类的类方法
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。