callable

codakcodak·2023년 10월 9일
0

OOP python

목록 보기
6/19
post-custom-banner

특별 메소드(special method)

  • 메소드 중에서 __로 시작해서 __로 끝나는 메소드
  • 함수처럼 실행할 수 있게 한다.
  • 다양한 기능을 적용할 수 있다.

__call__

  • 객체중에서 ()를 통해 실행 할 수 있는 객체
  • __call__메서드를 가지고 있는 객체
class Test:
    def say_hi(self):
        print("hi")

    def __call__(self):
        print("hi")


test1 = Test()
test1()


def test():
    print("hi")

#파이썬의 모든 것들은 객체로 이루어져 있다.(함수도 function이라는 객체이다.)
print(type(test))
test.__call__()
hi
<class 'function'>
hi
  • 파이썬의 모든 것은 객체이다.
  • 함수 또는 인서턴스에 ()를 붙인다면 __call__메서드를 찾고 이를 실행한다.
  • 매직메서드를 통해 인스턴스를 함수처럼 사용할 수 있다.
  • 함수의 이름은 code를 실행하는 __call__ 메서드를 가진 function클래스를 담은 인스턴스이다.

__getattribute__

  • .을 통해 객체의 자원에 접근 할 수 있게한다.
  • self,item인자를 받는다.
class Test:
    name = "seo"

    def say_hi(self):
        print("hi")

    def __call__(self):
        print("hi")

    def __getattribute__(self, item):
        print("__getattribute__")
        print(item)
        return super().__getattribute__(item)


test1 = Test()

print(test1.name)
__getattribute__
name
seo
profile
숲을 보는 코더
post-custom-banner

0개의 댓글