Python会自动绑定类要领的第一个参数,类要领的第一个参数(平常发起参数名为 cls)会自动绑定到类自身;但关于静态要领则不会自动绑定。
运用 @classmethod 润饰的要领就是类要领;运用 @staticmethod 润饰的要领就是静态要领。
相干引荐:《Python视频教程》
下面代码树模了定义类要领和静态要领:
class Bird: # classmethod润饰的要领是类要领 @classmethod def fly (cls): print('类要领fly: ', cls) # staticmethod润饰的要领是静态要领 @staticmethod def info (p): print('静态要领info: ', p) # 挪用类要领,Bird类会自动绑定到第一个参数 Bird.fly() #① # 挪用静态要领,不会自动绑定,因而顺序必需手动绑定第一个参数 Bird.info('crazyit') # 建立Bird对象 b = Bird() # 运用对象挪用fly()类要领,实在依旧照样运用类挪用, # 因而第一个参数依旧被自动绑定到Bird类 b.fly() #② # 运用对象挪用info()静态要领,实在依旧照样运用类挪用, # 因而顺序必需为第一个参数实行绑定 b.info('fkit')
从上面粗体字代码能够看出,运用 @classmethod 润饰的要领是类要领,该类要领定义了一个 cls 参数,该参数会被自动绑定到 Bird 类自身,不论顺序是运用类照样对象挪用该要领,Python 一直都会将类要领的第一个参数绑定到类自身,如 ① 号、② 号代码的实行结果。
上面顺序还运用 @staticmethod 定义了一个静态要领,顺序一样既可运用类挪用静态要领,也可运用对象挪用静态要领,不论用哪一种体式格局挪用,Python 都不会为静态要领实行自动绑定。
在运用 Python 编程时,平常不需要运用类要领或静态要领,顺序完整能够运用函数来替代类要领或静态要领。但是在特别的场景(比方运用工场形式)下,类要领或静态要领也是不错的挑选。
以上就是python类要领和静态要领的区分的细致内容,更多请关注ki4网别的相干文章!