Dandy Now!
  • [Python] 함수라고 믿었던 int()와 str()의 충격적인 정체
    2026년 02월 18일 11시 22분 27초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    함수라고 믿었던 int()와 str()의 충격적인 정체

    1. int, float, str의 실체

    1-1. 클래스와 생성자의 관계

    • Python에서 흔히 사용되는 int(), float(), str() 등은 엄밀히 말하면 독립된 함수가 아니라 클래스이다.
    • 사용자가 호출하는 int("10")과 같은 형태는 실제로는 int 클래스의 인스턴스를 생성하는 생성자 호출 과정이다.
    • 이러한 구조는 Python의 모든 데이터 타입이 객체로 관리된다는 객체지향 철학을 반영한다.1-1-1. 내장 함수로 오해받는 배경
    • 일반적인 함수와 동일한 호출 문법을 사용하기 때문에 사용자 입장에서는 '내장 함수'로 인식하기 쉽다.

    2. 기술적 근거와 증명

    2-1. type() 함수를 통한 타입 분석

    • Python의 type() 함수를 클래스 이름 자체에 적용하여 그 본질적인 정체를 확인할 수 있다.
      # int, float, str의 타입을 직접 확인하는 코드
      print(type(int))   # 출력: <class 'type'>
      print(type(float)) # 출력: <class 'type'>
      print(type(str))   # 출력: <class 'type'>
    • 만약 이들이 순수한 함수였다면 <class 'builtin_function_or_method'>라는 결과가 도출되었을 것이다.
    • 결과값인 <class 'type'>은 해당 식별자들이 새로운 객체를 생성할 수 있는 메타클래스임을 입증한다.

    3. 함수와 클래스의 구조적 차이점

    3-1. 동작 메커니즘의 대조

    • 함수는 특정 로직을 수행하고 결과값을 리턴하는 코드 브록인 반면, 클래스는 상태와 행위를 포함하는 객체의 설계도이다.
    • 클래스는 상속을 통해 기능을 확장할 수 있다는 점에서 함수와 근본적인 설계상의 차이를 지닌다.
    • 호출 시 함수는 로직 실행 후 값을 반환하지만, 클래스는 메모리상에 새로운 인스턴스를 할당하고 초기화 작업을 수행한다.

    4. 용어 혼용과 추상화

    4-1. Callable 객체의 공통성

    • Python 시스템 내에서 함수와 클래스는 모두 ()를 사용하여 호출 가능한 'Callable' 객체로 분류된다.
    • 실무적인 관점에서는 변환 기능에 집중하기 때문에 내부 구현이 클래스인지 함수인지를 구분하는 실익이 적은 경우가 많다.
    • 이러한 편의성 때문에 공식 문서에서도 이들을 묶어서 "Built-in Functions"라는 명칭으로 설명하곤 한다.4-1-1. 기타 내장 타입의 사례
    • 자료구조를 다루는 list(), dict(), tuple(), set() 등 역시 기술적으로는 모두 클래스에 해당한다.
    728x90
    반응형
    댓글