반응형
파이썬 클래스의 메서드는 객체의 동작을 정의하는 함수입니다. 클래스 내부에 정의된 함수로, 객체의 상태를 변경하거나 특정 작업을 수행할 수 있습니다. 메서드는 기본적으로 객체 인스턴스와 연결되어 있어, 객체 상태(속성)에 접근하거나 수정할 수 있습니다.
메서드의 종류
- 인스턴스 메서드 (Instance Method)
- 객체의 인스턴스에서 호출되는 메서드입니다.
- 메서드 정의 시 첫 번째 인수로
self
를 받으며, 이는 호출한 객체 자체를 가리킵니다.
- 클래스 메서드 (Class Method)
- 클래스 자체에서 호출되는 메서드입니다.
- 메서드 정의 시 첫 번째 인수로
cls
를 받으며, 이는 호출한 클래스 자체를 가리킵니다. @classmethod
데코레이터를 사용하여 정의합니다.
- 정적 메서드 (Static Method)
- 클래스나 인스턴스에 관계없이 호출될 수 있는 메서드입니다.
self
나cls
와 같은 특별한 첫 번째 인수를 받지 않습니다.@staticmethod
데코레이터를 사용하여 정의합니다.
예제 코드
다음은 위에서 설명한 세 가지 메서드를 포함하는 예제 코드입니다.
class MyClass:
class_attribute = "I am a class attribute"
def __init__(self, name):
self.name = name # 인스턴스 속성
# 인스턴스 메서드
def instance_method(self):
return f"This is an instance method called by {self.name}"
# 클래스 메서드
@classmethod
def class_method(cls):
return f"This is a class method. Class attribute: {cls.class_attribute}"
# 정적 메서드
@staticmethod
def static_method():
return "This is a static method. No access to instance or class variables"
# 인스턴스 생성
obj = MyClass("Alice")
# 인스턴스 메서드 호출
print(obj.instance_method()) # 출력: This is an instance method called by Alice
# 클래스 메서드 호출
print(MyClass.class_method()) # 출력: This is a class method. Class attribute: I am a class attribute
# 정적 메서드 호출
print(MyClass.static_method()) # 출력: This is a static method. No access to instance or class variables
설명
- 인스턴스 메서드 (
instance_method
):- 이 메서드는
self
를 통해 객체 인스턴스에 접근하여 해당 객체의 속성(name
)을 사용할 수 있습니다. - 객체 인스턴스(
obj
)를 통해 호출됩니다.
- 이 메서드는
- 클래스 메서드 (
class_method
):- 이 메서드는 클래스 변수(
class_attribute
)에 접근하기 위해cls
를 사용합니다. - 클래스 자체(
MyClass
)를 통해 호출됩니다. 클래스 메서드는 클래스 변수를 조작하거나 클래스 레벨의 동작을 정의할 때 유용합니다.
- 이 메서드는 클래스 변수(
- 정적 메서드 (
static_method
):- 이 메서드는 클래스나 인스턴스와 관련이 없는 독립적인 작업을 수행할 수 있습니다.
- 클래스나 인스턴스를 통해 호출할 수 있지만, 클래스 상태나 인스턴스 상태에 접근하지 않습니다.
요약
- 인스턴스 메서드는 객체의 상태를 조작하는데 주로 사용됩니다.
- 클래스 메서드는 클래스 레벨에서 동작을 수행하거나 클래스 변수를 조작하는데 사용됩니다.
- 정적 메서드는 클래스나 인스턴스 상태와 무관한 작업을 수행할 때 유용합니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] 클래스를 상속해서 나의 클래스 만들기 (다중 상속 포함) (0) | 2024.08.13 |
---|---|
[ Python ] 클래스 내에서 멤버 변수 선언하기 (지역/전역) (0) | 2024.08.13 |
[ Python ] 클래스의 선행 참조 문제 분서과 해결 방법 (0) | 2024.08.13 |
[ Python ] 클래스 변수와 인스턴스 변수에 대해서 알아보기 (0) | 2024.08.13 |
[ Python ] pickle를 사용하여 데이터를 읽고 쓰기 (0) | 2024.08.13 |