728x90
파이썬에서 메소드는 크게 3가지 종류로 나뉜다.
1. 인스턴스 메소드 (Instance Method)
- 가장 흔히 쓰이는 인스턴스 메소드는 클래스에 아무 데코레이터(decorator) 없이 선언되며, 클래스의 인스턴스(객체)에서 호출이된다.
- 첫 번째 매개변수(인자)로 일반적으로 self를 받으며, 이는 호출하는 인스턴스 자신을 가르킨다.
-> self를 통해 인스턴스 속성(attribute)에 접근하거나 다른 인스턴스 메소드를 호출할 수 있다. - 메소드를 호출한 객체에만 영향을 준다.
- 인스턴스를 생성한 후에 해당 인스턴스를 대상으로 호출해야한다.
class MyClass:
def __init__(self, value):
self.value = value
def instance_method(self):
return self.value
# 메소드 호출 전에 인스턴스를 생성해야만 한다.
obj = MyClass(10)
# 인스턴스 메소드 호출
print(obj.instance_method()) # Output: 10
2. 클래스 메소드 (Class Method)
- @classmethod 데코레이터를 사용해서 클래스에 메소드를 선언하면 클래스 메소드가 된다.
- 첫 번째 매개변수(인자)로 일반적으로 cls를 받으며, 이는 호출하는 클래스 자체를 가르킨다.
- 클래스 객체 전체에 영향을 준다.
-> 생성된 객체의 값을 모두 수정하는 경우에 유용 - 클래스 속성(attribute)에 접근하거나 클래스 메소드를 호출할 수 있다.
하지만 인스턴스 속성에 접근하거나 인스턴스 메소드는 호출할 수 없다.
class MyClass:
# 클래스 변수
class_variable = 0
def __init__(self, value):
self.value = value
@classmethod
def class_method(cls, increment):
cls.class_variable += increment
return cls.class_variable
# 클래스 메소드 호출 -> 클래스 전체 객체에 영향을 미침
print(MyClass.class_method(5)) # Output: 5
print(MyClass.class_method(3)) # Output: 8
3. 정적 메소드 (Static Method)
- @staticmethod 데코레이터를 사용해서 클래스에 메소드를 선언하면 정적 메소드가 된다.
- self나 cls와 같은 특별한 첫 번째 인자가 없다.
- 정적 메소드는 클래스나 인스턴스와 관계없이 독립적으로 호출된다.
- 클래스/인스턴스 속성에 접근하거나 클래스/인스턴스 메소드를 호출할 수 없다.
- 클래스나 인스턴스 상태와 무관한 기능을 수행할 때 사용한다.
-> 특정 클래스와 연관은 있지만 독립적으로 동작하는 유틸리티 함수를 정의할 때 유용하다.
즉 관련이 있는 유튤리티 함수들을 하나의 클래스로 묶어두고 싶을 때 사용 가능한다. - '클래스명.정적메소드' 또는 '인스턴스명.정적메소드' 로 호출 가능하다.
class Dog:
# 클래스 변수
species = "Husky"
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def is_adult(age):
return age >= 1
# 클래스로 정적 메소드 호출
print(Dog.is_adult(5)) # Output: True
print(Dog.is_adult(0.5)) # Output: False
# 인스턴스를 통해 정적 메소드 호출
dog1 = Dog("Buddy", 5)
print(dog1.is_adult(dog1.age)) # Output: True
728x90
'회고' 카테고리의 다른 글
[24.06.05] 99클럽 코테 스터디 17일차 TIL - 그리디 알고리즘 해결법, 증명 (1) | 2024.06.05 |
---|---|
[24.06.04] 99클럽 코테 스터디 16일차 TIL - 그리디 알고리즘 (0) | 2024.06.04 |
[24.06.02] 99클럽 코테 스터디 14일차 TIL : Class, Attribute, self (0) | 2024.06.02 |
[24.06.01] 99클럽 코테 스터디 13일차 TIL - OrderedDict (0) | 2024.06.01 |
[24.05.31] 99클럽 코테 스터디 12일차 TIL - DefaultDict (0) | 2024.05.31 |