python类方法和静态方法有啥用,python中类方法,类实例方法,静态方法有何区别
事实上,Python完全支持类方法甚至静态方法的定义。Python的类方法和静态方法很像,都是建议由类调用(其实也可以由对象调用)。
类方法和静态方法的区别在于Python会自动绑定类方法的第一个参数,类方法的第一个参数(通常推荐的参数名是cls)会自动绑定到类本身;但是,静态方法不会自动绑定。
用@ @classmethod修饰的方法是类方法;用@ @staticmethod修饰的方法是静态方法。
下面的代码演示如何定义类方法和静态方法:
classBird:
由#classmethod修饰的方法是一个类方法。
@classmethod
定义(cls):
Print(类方法fly: ,cls)
由#staticmethod修饰的方法是一个静态方法。
@静态方法
定义信息(p):
打印(“静态方法信息:”,第页)
#调用class方法,Bird类会自动绑定到第一个参数
Bird.fly()#
#调用静态方法,它不会自动绑定,所以程序必须手动绑定第一个参数。
Bird.info(crazyit )
#创建一个鸟对象
b=鸟()
#使用对象调用fly()类方法,但实际上仍然使用类调用,
#所以第一个参数仍然自动绑定到Bird类
b.fly()#
#使用对象调用info()静态方法,但仍使用类调用,
#所以程序必须为第一个参数执行绑定
B.info(fkit )从上面加粗的代码可以看出,用@ @classmethod修饰的方法是一个类方法。这个类方法定义了一个cls参数,该参数将自动绑定到Bird类本身。Python总是会把类方法的第一个参数绑定到类本身,比如代码和的执行效果,不管程序是用类还是用对象调用方法。
上面的程序还通过使用@ @staticmethod定义了一个静态方法。该程序还可以通过使用类或对象来调用静态方法。无论以哪种方式调用,Python都不会对静态方法进行自动绑定。
用Python编程时,一般不需要使用类方法或者静态方法。程序可以使用函数来代替类方法或静态方法。但是在特殊情况下(比如使用工厂模式),类方法或者静态方法也是不错的选择。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。