2025.01.03 파이썬 클래스의 메서드

2025치는게 이상하다. 2024가 익숙한데 아직...!

오늘은 오전에 병원 예약때문에 아침 일찍 일어나서 공부하다가 외출찍고 다녀왔따.

다녀오니까 10시 조금 넘었는데 학습반 강의가 시작된다고 사람들이 모여있어서 나도 호다닥 합류했다.

오늘 학습반에서는 클래스 메서드에 대해 배웠다.

 


인스턴스 메서드

먼저 가장 기본이 되는 인스턴스 메서드

self라는 매개변수를 받는 이유는 객체 자신을 참조하는 거라고 한다.

class Cat:
    def __init__(self, name):  # 이것도 인스턴스 메서드라고 한다
        self.name = name
    
    def meow(self):  # 인스턴스 메서드
        return f"{self.name}: 야옹!"

my_cat = Cat("나비")
print(my_cat.meow())

self가 왜 필요하냐면 각각의 고양이가 자신의 이름으로 울어야 하니까!

 

 

클래스 메서드

@classmethod라는 걸 붙이고 cls라는 매개변수를 받는데, 이건 클래스 자체를 받는거라고 한다.

class Student:
    school = "파이썬 고등학교"
    
    @classmethod
    def change_school(cls, new_name):  # 클래스 메서드
        cls.school = new_name  # 학교 이름을 변경할 수 있다!

# 이렇게 클래스에서 바로 호출할 수 있다니 신기하다
Student.change_school("파이썬 대학교")

인스턴스를 만들지 않고도 메서드를 호출할 수 있다는게 정말 편리한 것 같다.

 

 

정적 메서드

이건 뭔가 특이했다. self도 필요 없고 cls도 필요 없다고 한다.

class Calculator:
    @staticmethod
    def add(a, b):  # 정적 메서드
        return a + b
    
    @staticmethod
    def is_positive(number):
        return number > 0

# 클래스에서 바로 호출할 수 있다
print(Calculator.add(3, 5))
print(Calculator.is_positive(-1))

그냥 일반 함수 같은데 왜 클래스 안에 넣는지 궁금했는데, 관련 있는 기능들을 묶어두기 위해서라고 한다. 이해가 됐다!

 

 

 

  • 인스턴스 메서드는:
    • self를 받음
    • 인스턴스의 데이터를 다룰 때 사용
    • 객체마다 다른 결과가 필요할 때 씀
  • 클래스 메서드는:
    • cls를 받음
    • 클래스 전체에 관련된 작업할 때 사용
    • 인스턴스 없이도 호출 가능
  • 정적 메서드는:
    • self나 cls 없음
    • 독립적인 작업을 할 때 사용
    • 그냥 일반 함수인데 클래스와 관련이 있는 경우

 

 

 

'Today I learned' 카테고리의 다른 글

WIL  (0) 2025.01.10
Django의 관계 필드  (2) 2025.01.09
WIL  (5) 2025.01.03
2024.12.30 백준 - 너의평점은(25206번)  (0) 2024.12.30
냥타로 수정  (2) 2024.12.28