Python中staticmethod方法
staticmethod叫做静态方法,在类里面加上@staticmethod装饰器的方法不需要传入self,同时该方法不能使用类变量和实例变量。在类内部可以调用加上装饰器@staticmethod的方法,同时也不需要实例化类调用该方法
静态方法和类方法的区别在于:
静态方法对类一无所知,只处理参数。
类方法与类一起使用,因为它的参数始终是类本身。
例子1:
class Person(): #加上静态方法 @staticmethod def get_name(): return 'Jack' def work(self): #调用静态方法 return f'{self.get_name()} is a teacher' #不需要实例化直接调用get_name() print(Person.get_name()) #实例化调用work() a_obj = Person() print(a_obj.work()) 结果: Jack Jack is a teacher
例子2:
class Dates: def __init__(self, date): self.date = date def getDate(self): return self.date @staticmethod def toDashDate(date): return date.replace("/", "-") date = Dates("15-12-2016") dateFromDB = "15/12/2016" dateWithDash = Dates.toDashDate(dateFromDB) if(date.getDate() == dateWithDash): print("Equal") else: print("Unequal")
总结:如果类里面不想某个方法使用类属性和调用其它方法就可以使用静态方法,有助于优化代码结构和提高程序的可读性。