잡담
매일 TIL 하는건 이전에도 알았지만, 역시 너무 힘든일이다. 그래도 하루에 30분씩이라도 이전 스터디 내용을 정리하거나 몰랐던 것들 정리하는 시간을 가지자.
unbound, bound method
최근 파이썬 공식문서 번역을 진행하면서 몰랐던 것들 혹은 알고 있었지만 잘못 알고 있었던 것들을 되짚어보고 있다. 사실 오늘 이 내용은 파이썬 버전을 3부터 썼던 나로서는 제대로 알고 넘어갈 필요가 있었다.
우선 bound, unboudn 메서드에 대한 개념은 python3 에서 제거되었다고 한다.
공식 문서
The concept of “unbound methods” has been removed from the language. When referencing a method as a class attribute, you now get a plain function object. What’s New In Python 3.0
코드
>>> class D(object):
def f(self, x):
return x
>>> d = D()
>>> D.__dict__['f'] # Stored internally as a function
<function f at 0x00C45070>
>>> D.f # Get from a class becomes an unbound method
<unbound method D.f>
>>> d.f # Get from an instance becomes a bound method
<bound method D.f of <__main__.D object at 0x00B18C90>>
- bound method : 메서드 호출시 첫 인자로 인스턴스 객체를 넘기는 호출 방식
- unbound method : 메서드 호출시 명시적으로 첫 인자로 인스턴스 객체를 넘기는 방식, 특정 클래스 인스턴스에 바인딩되지 않아서 unbound 메서드
- 참고
under the hood
파이썬과는 관련없지만 번역을 제대로 못했어서 찾아봤던 부분 -> oo 이면 정도로 생각, 아니면 동작하는 원리 under the hood