객체 지향 프로그래밍이란?객체를 만드는 법클래스 메소드 II

Q

클레스 매소드

조회 346

좋아요 0

2022년 1월 26일

A
1개의 답변이 있어요
2022년 1월 26일

댓글 2

2022년 1월 27일
그니까 클레스 변수, 인스턴스변수 차이점 알겠는데, 클레스내에서 그냥 선언한 메서드def는 클레스 변수, 인스턴스 변수 둘다 호출가능하고,

@클레스 매서드 는 클레스 변수에만 접근 가능하죠. 이럴거면 왜 쓰는건지 도저히 이해가 안갑니다.
다시 말씀드리면 클레스 변수에 접근하고 싶을 때 그냥 메소드 def 만들고 안에 클레스명.(클레스변수명) 해서 이용할 수 있는데,
굳이 @데코레이션 해서 한줄 더 써서 클레스 메소드를 사용해야하는 이점이 있을까요?
제가 같은 말만 반복해서 저도 미치겠네요.
2022년 1월 29일
클래스 메소드는 인스턴스가 있고 없고는 상관 없습니다. 그냥 클래스에서 관리하는 변수이기 때문에 인스턴스 메소드에서 접근도 가능하지만 인스턴스 메소드 외에 그냥 클래스명.클래스 메소드() 의 형식으로도 사용이 가능합니다. 중요한 것은 클래스 메소드는 클래스 변수에 접근하기 위해 만든 게 아닙니다. 클래스 메소드는 클래스 변수와 무관하게 클래스 단위로 처리하는 동작이 있기 때문에 있을 뿐입니다. 그리고 이렇게 정의된 클래스 메소드는 모든 인스턴스가 공통으로 가지는 동작이구요. 인스턴스 메소드는 모든 인스턴스가 같은 동작을 하지만 인스턴스 메소드는 인스턴스마다 다른 처리가 발생합니다. 코드는 동일하기 때문에 같은 처리 같아보이지만 사용되는 값이 모든 인스턴스가 각자 관리하는 값이기 때문이에요.

클래스 메소드는 인스턴스 메소드들 중 모두 동일한 동작을 해야 하는 메소드를 클래스 메소드로 만든다고 보시면 됩니다.

당장 이해가 가지 않으신다면 조금 더 고민하면서 지나쳐보시는 것도 좋습니다. 저도 배울 당시에는 잘 몰랐는데 어느 순간 이런 게 필요한 시점이 오더라구요.

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇