A static method is unbound, just like a normal function, except that it needs to be called through a class or instance. No implicit parameters.
Instance methods are for instances, class methods are for classes, they can be inherited and redefined, and static methods cannot inherit and can be considered global functions.
#Https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methodsclassDate:def __init__(self,month,day,year): Self.month=month Self.day=Day self.year= Yeardefdisplay (self):return "parent class {0}-{1}-{2}". Format (self.month,self.day,self.year) @staticmethoddefsmil (month,day):returnDate (month,day,2015) @classmethoddefcmil (self,month,day):returnSelf (month,day,2015)classdatesub (Date):defdisplay (self):return "Subclass {0}-{1}-{2}". Format (self.month,self.day,self.year) new_year= Date (1,1,2016) Mi_new_year= Date.smil ()Print(New_year.display ())Print(Mi_new_year.display ())Print(Isinstance (new_year,date))Print(Isinstance (mi_new_year,date))Print("-"*40) DateSub1=datesub (10,19,2017) DateSub2=datesub.smil (10,10) DateSub3=datesub.cmil (10,11)Print(Datesub1.display ())Print(Datesub2.display ())Print(Datesub3.display ())Print("isinstance (datesub1,datesub) =%s"%isinstance (datesub1,datesub))Print("isinstance (datesub2,datesub) =%s"% isinstance (datesub2,datesub))#Subclass Create plain Date objectPrint("isinstance (datesub2,date) =%s"%isinstance (datesub2,date))Print("isinstance (datesub3,datesub) =%s"%isinstance (datesub3,datesub))Print("-"*40)PrintDate.displayPrintDate.smilPrintDate.cmilPrintDate.cmil (a)
View Code
Python Staticmethod and Classmethod methods