이번 글에서는 기본적인 내용을 다루겠습니다. 클래스 메소드와 정적 메소드의 차이점 파이썬과 클래스 메소드와 정적 메소드를 사용해야 하는 경우 파이썬에서.
Python의 클래스 메소드란 무엇입니까?
@classmethod 데코레이터는 함수가 정의된 후 평가되는 표현식인 내장 함수 데코레이터입니다. 해당 평가 결과는 함수 정의에 영향을 미칩니다. ㅏ 수업 방식 인스턴스 메서드가 인스턴스를 받는 것처럼 클래스를 암시적인 첫 번째 인수로 받습니다.
자바 문자열의 값
구문 Python 클래스 방법:
class C(object): @classmethod def fun(cls, arg1, arg2, ...): .... fun: function that needs to be converted into a class method returns: a class method for function.>
- 클래스 메서드는 클래스 메서드에 바인딩된 메서드입니다. 수업 수업의 대상이 아닙니다.
- 객체 인스턴스가 아닌 클래스를 가리키는 클래스 매개변수를 사용하므로 클래스 상태에 액세스할 수 있습니다.
- 클래스의 모든 인스턴스에 적용되는 클래스 상태를 수정할 수 있습니다. 예를 들어 모든 인스턴스에 적용할 수 있는 클래스 변수를 수정할 수 있습니다.
Python의 정적 메서드란 무엇입니까?
정적 메서드는 암시적인 첫 번째 인수를 받지 않습니다. 정적 메서드는 클래스의 개체가 아닌 클래스에 바인딩된 메서드이기도 합니다. 이 메서드는 클래스 상태에 액세스하거나 수정할 수 없습니다. 메서드가 클래스에 존재하는 것이 합리적이기 때문에 클래스에 존재합니다.
구문 Python 정적 방법:
class C(object): @staticmethod def fun(arg1, arg2, ...): ... returns: a static method for function fun.>
클래스 메소드와 정적 메소드
Class 메소드와 정적 메소드의 차이점은 다음과 같습니다.
- 클래스 메서드는 cls를 첫 번째 매개 변수로 사용하지만 정적 메서드에는 특정 매개 변수가 필요하지 않습니다.
- 클래스 메서드는 클래스 상태에 액세스하거나 수정할 수 있지만 정적 메서드는 클래스 상태에 액세스하거나 수정할 수 없습니다.
- 일반적으로 정적 메서드는 클래스 상태에 대해 아무것도 모릅니다. 이는 일부 매개변수를 사용하고 해당 매개변수에 대해 작동하는 유틸리티 유형 메소드입니다. 반면에 클래스 메소드에는 클래스가 매개변수로 있어야 합니다.
- Python에서는 @classmethod 데코레이터를 사용하여 클래스 메서드를 만들고, @staticmethod 데코레이터를 사용하여 Python에서 정적 메서드를 만듭니다.
클래스 또는 정적 메소드를 언제 사용합니까?
- 우리는 일반적으로 클래스 메소드를 사용하여 팩토리 메소드를 생성합니다. 팩토리 메소드는 다양한 사용 사례에 대해 클래스 객체(생성자와 유사)를 반환합니다.
- 우리는 일반적으로 유틸리티 함수를 생성하기 위해 정적 메서드를 사용합니다.
클래스 메소드와 정적 메소드를 정의하는 방법은 무엇입니까?
Python에서 클래스 메소드를 정의하려면 @classmethod 데코레이터를 사용하고, 정적 메소드를 정의하려면 @staticmethod 데코레이터를 사용합니다.
두 가지의 차이점을 이해하기 위해 예를 살펴보겠습니다. Person 클래스를 만들고 싶다고 가정해 보겠습니다. 이제 Python은 C++ 또는 Java와 같은 메서드 오버로딩을 지원하지 않으므로 클래스 메서드를 사용하여 팩토리 메서드를 만듭니다. 아래 예제에서는 클래스 메서드를 사용하여 출생 연도부터 사람 개체를 만듭니다.
위에서 설명한 것처럼 우리는 유틸리티 함수를 생성하기 위해 정적 메소드를 사용합니다. 아래 예에서는 정적 메서드를 사용하여 사람이 성인인지 여부를 확인합니다.
하나의 간단한 예:
수업 방법:
파이썬3
CSS 이미지 중앙 정렬
class> MyClass:> >def> __init__(>self>, value):> >self>.value>=> value> >def> get_value(>self>):> >return> self>.value> # Create an instance of MyClass> obj>=> MyClass(>10>)> # Call the get_value method on the instance> print>(obj.get_value())># Output: 10> |
>
>산출
10>
정적 방법:-
파이썬3
1차 논리
class> MyClass:> >def> __init__(>self>, value):> >self>.value>=> value> >@staticmethod> >def> get_max_value(x, y):> >return> max>(x, y)> # Create an instance of MyClass> obj>=> MyClass(>10>)> print>(MyClass.get_max_value(>20>,>30>))> print>(obj.get_max_value(>20>,>30>))> |
>
>산출
30 30>
다음은 전체 구현입니다.
파이썬3
scan.nextstring 자바
# Python program to demonstrate> # use of class method and static method.> from> datetime>import> date> class> Person:> >def> __init__(>self>, name, age):> >self>.name>=> name> >self>.age>=> age> ># a class method to create a Person object by birth year.> >@classmethod> >def> fromBirthYear(>cls>, name, year):> >return> cls>(name, date.today().year>-> year)> ># a static method to check if a Person is adult or not.> >@staticmethod> >def> isAdult(age):> >return> age>>18> person1>=> Person(>'mayank'>,>21>)> person2>=> Person.fromBirthYear(>'mayank'>,>1996>)> print>(person1.age)> print>(person2.age)> # print the result> print>(Person.isAdult(>22>))> |
>
>
산출:
21 25 True>
보조 공간: 오(1)