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 클래스를 상속받는 것이다
'Language > python' 카테고리의 다른 글
[python] 클래스 멤버 변수 선언과 __init__(), self (0) | 2017.12.31 |
---|---|
[python] virtualenv이란? / 사용법 (0) | 2017.12.31 |
[python] WSGI, Middleware (flask, django) (0) | 2017.12.29 |
[python] Django란? (0) | 2017.12.29 |
Web 개발의 특징 / Django F/W를 사용해보며 느낀 점 (5) | 2017.12.29 |
WRITTEN BY
- hojongs
블로그 옮겼습니다 https://hojongs.github.io/