python class에는 슈퍼클래스에 접근하기 위해 사용하는 super() 메서드가 있다


python3에서는 문제없이 잘 동작하는데, python2는 그렇지 않다


class MyClass: pass


위와 같이 선언하면 super()를 호출할 때 python2에서는 에러가 발생한다 (super()의 파라미터가 type이 아닌 classobj일 때)


그래서 아래와 같이 object를 상속받아 선언해야한다


class MyClass(object): pass


---


python2에서는 super() 등 별도의 목적을 위해,

python3에서는 python2 compatibility를 위해 사용한다 (__future__처럼)


좀더 내부적으로 보면, python2에서 상속없이 선언한 클래스는 old-style class로 선언되기 때문에

new-style class로 선언하기 위해 object 클래스를 상속받는 것이다



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/