object는 왜 상속받는 건가요?


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

소스코드

class MyClass(object):
    # 클래스 코드
  • 2016년 01월 19일에 작성됨

조회수 312


1 답변


좋아요
1
싫어요
채택취소하기

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)를 표기해주세요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close