class Test(object): """docstring for Test""" def __init__(self, arg=None): super(Test, self).__init__() self.arg = arg def say_hi(self): print 'hello wrold' def main(): test = Test() //1. 起首实例化test类 test.say_hi() //2. 再挪用类的要领 if __name__ == '__main__': main()
而运用@staticmethod或@classmethod,就能够不须要实例化,直接类名.要领名()来挪用。
这有利于构造代码,把某些应当属于某个类的函数给放到谁人类里去,同时有利于定名空间的整齐。
class Test(object): """docstring for Test""" def __init__(self, arg=None): super(Test, self).__init__() self.arg = arg def say_hi(self): print 'hello wrold' @staticmethod def say_bad(): print 'say bad' @classmethod def say_good(cls): print 'say good' def main(): test = Test() test.say_hi() Test.say_bad() //直接类名.要领名()来挪用 Test.say_good() //直接类名.要领名()来挪用 if __name__ == '__main__': main()
@staticmethod或@classmethod的区分
类的一般要领,地一个参数须要self参数示意本身。
@staticmethod不须要示意本身对象的self和本身类的cls参数,就跟运用函数一样。
@classmethod也不须要self参数,但第一个参数须如果示意本身类的cls参数。
以上就是装潢器@staticmethod和@classmethod有什么区分的细致内容,更多请关注ki4网别的相干文章!