python 实例方法、静态方法、类方法的区别

实例方法,就是类中定义的普通类型的方法,比如构造函数:

def init(self, x, y):
pass

静态方法,可以无需实例化进行使用, 但是在使用的时候需要通过类名进行调用即 cls.check_str

@staticmethod
def check_str(str):
    return True

静态方法,也可以作为数据格式化组件进行使用,通过静态方法格式化数据后,返回实例化后的类, 如此使用有个弊端,即类名修改的时候,静态方法返回的类调用也要进行修改

 class Date:
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day

        @staticmethod
        def parse_from_string(date_str):
            year, month, day = tuplu(date_str.split("-"))
            return Date(int(year), int(month), int(day))

类方法,解决静态方法中 类名称修改后,静态方法返回的类条用也需要修改的问题

 class Date:
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day

        @classmethod
        def from_string(cls, date_str):
            year, month, day = tuplu(date_str.split("-"))
            return cls(int(year), int(month), int(day))

最后注意:
静态方法没有self
动态方法中也没有self,变为了cls,当然这个名称可以自己改cls是一个规范

你可能感兴趣的:(python 实例方法、静态方法、类方法的区别)