object는 왜 상속받는 건가요?

조회수 15307회

클래스를 선언할 때 이름 뒤에 (object)를 써서 object를 상속받는 이유가 뭔가요? 어떤 코드에서는 저걸 써주고 어떤 코드에서는 안 써주는데 차이가 있나요?

소스코드

class MyClass(object):
    # 클래스 코드

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    new-style 클래스와 old-style클래스의 차이입니다. 클래스 스타일은 파이썬 버전에 따라서 다음과 같이 나뉩니다.

    Python 3.x:

    1. class MyClass(object): new-style 클래스
    2. class MyClass: new-style 클래스 (명시하지 않아도 자동으로 상속)

    Python 2.x:

    1. class MyClass(object): new-style 클래스
    2. class MyClass: >>>>OLD-STYLE 클래스<<<<

    old-style과 new-style은 python2.2부터 구분하기 시작했습니다.

    그 전까지 쓰이던 old-style은 이름 그대로 이제 너무 오래되어서 3.x 부터는 존재하지 않기 때문에 python3.x 에서 base클래스를 정의할 때는 object를 굳이 표기하지 않아도 괜찮습니다.

    문제는 이 3.x코드를 2.x코드에 쓸 때 발생합니다. 2.x에서 obeject를 표시하지 않으면 이 클래스는 old-style로 간주됩니다.

    old-style클래스와 new-style클래스는 아주 다르고 이는 프로그램에 생각지도 못한 문제를 야기할 수 있기 때문에 귀찮더라도 호환성을 위해서 꼭 (object)를 표기해주세요.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)