- 참고: stackoverflow.com/questions/1120927/which-is-better-in-python-del-or-delattr

foo라는 object에 bar라는 attribute가 있다고 했을 때, 이 attribute를 지우려면

del foo.bar
delattr(foo, "bar")

del을 쓸 수도, delattr를 쓸 수도 있습니다.

# del foo.bar
  2           0 LOAD_FAST                0 (foo)
              3 DELETE_ATTR              0 (bar)

# delattr(foo, "bar")
  2           0 LOAD_GLOBAL              0 (delattr)
              3 LOAD_FAST                0 (foo)
              6 LOAD_CONST               1 ('bar')
              9 CALL_FUNCTION            2
             12 POP_TOP             

바이트코드로 확인해봤을 때 del은 두개의 인스트럭션만 사용하는 반면 delattr은 5개의 인스트럭션을 사용한다네요

속도차이가 엄청 나는건 아니지만 del이 좀 더 빠릅니다

대신 delattr은 동적으로 attribute를 지울 수 있으니 상황에 맞게 쓰시면 되겠습니다.

반응형