데코레이터 @staticmethod와 @classmethod의 차이점은 다음과 같습니다. @staticmethod에는 self 및 cls 매개변수가 필요하지 않으며, @classmethod에는 self 매개변수가 필요하지 않지만 cls 매개변수가 필요합니다.
일반적으로 클래스의 메서드를 사용할 때는 먼저 클래스를 인스턴스화한 다음 인스턴스화된 클래스를 사용하여 해당 메서드를 호출해야 합니다.
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는 함수를 사용하는 것처럼 자체 객체의 자체와 자체 클래스의 cls 매개변수를 나타낼 필요가 없습니다.
@classmethod에는 self 매개변수가 필요하지 않지만 첫 번째 매개변수는 자체 클래스를 나타내는 cls 매개변수여야 합니다.
위 내용은 데코레이터 @staticmethod와 @classmethod의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!