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

Q

클래스 메소드를 꼭 사용해야 하나요?

조회 640

좋아요 4

2020년 11월 14일

A
1개의 답변이 있어요
2020년 11월 14일

댓글 2

2020년 11월 15일
답글 감사합니다. 그런데 밑에 두 가지가 똑같이 동작하는 거 아닌가 싶어서요.
그래서 굳이 @classmethod 로 정의해야 하나 싶었습니다.
def number_of_user():
print("User Number is {}".format(User.count))
name = "AA"
age = 55
return User(name,age)

@classmethod
def number_of_user(cls):
print("User Number is {}".format(cls.count))
name = "BB"
age = 33
return cls(name,age)
2020년 11월 16일
클래스 메소드라는 것과 인스턴스 메소드의 특징을 알려주시려고 하다보니 그냥 @classmethod라는 게 붙은 차이라고 느끼실 수도 있을 것 같아요. 그런데 모든 인스턴스가 동일한 동작을 해야 할 때 작성하신 것처럼 인스턴스 메소드 안에서 값을 고정시켜놓을 수도 있지만 클래스 변수와 클래스 메소드를 활용할 수도 있다? 정도로 이해하시면 될거에요.


그리고 음... 위에서 들어준 예시와 같이 저렇게 사용하실 수는 있다고 생각합니다. 그런데 보통 인스턴스 메소드에서 새로운 인스턴스를 return하는 경우는 많이 없다고 생각합니다. 이게 뭔가 이상하다면 이상하고 코드적으로 안 이상하다면 안 이상할 수도 있지만 개념적으로 봤을 때 이상하다고 생각합니다. 인스턴스는 이미 하나의 객체인데 또 다른 인스턴스를 만들어내는 것이 아메바라는 Object라면 그럴 수도 있지만 이분법이 아닌 이상 조금 어색한 느낌이 들기도 하네요.

(주) 코드잇

대표강영훈

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

이메일support@codeit.kr

사업자 번호313-86-00797

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

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