일급 객체, 이급 객체를 구분하는 이유와 이 구분을 무엇이라 합니까?

조회수 2372회

"파이썬 내의 객체는 모두 다 일급객체이다" 라는 문장을 잘 이해하지 못하고 있습니다. 일급 객체가 무엇인지는 대충 설명을 보니 알 것 같은데,

  1. 이것을 구분하는 실익과
  2. 일급 객체, 이급 객체, 3급 객체 식으로 객체의 등급을 나누는 것을 무엇이라고 합니까?

그러니까..... "소고기 등급제" 같은 등위의 이름이 알고 싶습니다.

2 답변

  • 일급객체 조건이란

    객체를 변수나 list 같은 컬렉션에 담을 수 있다. 함수나 메소드 파라미터로 전달 할 수 있다 함수나 메소드의 리턴값으로 사용할 수 있다.

    등이 있습니다.

    우리가 많이 사용하는 언어중 자바스크립트, 파이썬이 일급객체 언어이고 c, pascal,c++은 아닙니다.

    자바스크립트나 파이썬을 보면 함수명을 파라미터로 전달 할 수 있고 그렇게 전달한 함수를 다른 함수내에서 사용할 수 있습니다. 그러나 c를 보면 불가능하죠 함수포인터를 이용해서 전달해야 합니다.

    마찬가지로 리턴타입으로도 파이썬은 자유롭게 보낼 수 있지만 c는 역시 포인터를 리턴해야 합니다.

    즉 파이썬에서 함수나 메소드는 일급객체입니다만 c에서는 아니라는거죠. 뭐 좋고 나쁘고 이런 개념은 아닙니다.

    다만 일급객체의 특성은 특히(당연히) 함수형 언어들에서 중요한 포인트입니다.

  • 특정한 조건을 만족시키는 Object를 First-class Object라고 합니다.

    어떻게 보자면, First-class citizen의 조건을 만족시키는 무엇인가는 매우 상식적이고 직관적인 것 처럼 보입니다.

    Firct-class Citizen의 조건은 다음과 같습니다.

    조건

    간단하게 말하자면, Object로서의 특성을 모두 지닌 것을 First-class Object라고 이해할 수 있습니다.

    만약에 First-class function 이라고 한다면, function이 Object로서 다루어지는 Function고 이해할 수 있겠죠.

    callable한 Object쯤 될까요 ㅎㅎ..

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)