본문 바로가기
Python Object-oriented Programming

Callable

by 자동매매 2023. 4. 2.

Introduction to Python callables

 

() 연산자를 사용하여 A 객체가 호출 될 수 있는 경우,  A는 callable이다.

 

A()

 

예를 들어, 함수 메서드는 callable이다.

Python에서는 다른 많은 object도 callable이다. Callable은 항상 값을 반환합니다.

객체가 호출 가능한지 확인하려면 built-in(내장 함수) callable 사용할 있습니다.(반환값 : bool)

 

callable(object) -> bool

  

Python callable function examples

 

다음은 Python에서 호출 가능한 다양한 유형의 객체를 보여줍니다.

 

1) built-in functions

 

Built-in function는 callable이다. 예를 들어, print, len, callable.

 

print(callable(print))
print(callable(len))
print(callable(callable))

 

Output:

 

True
True
True

 

2) User-defined functions

 

def 또는 lambda 식을 사용하여 만든 모든 사용자 정의 함수는 callable이다. 예를 들어:

 

def add(a, b):
    return a + b


print(callable(add))  # True
print(callable(lambda x: x*x))  # True

 

Output:

 

True 
True

 

3) built-in methods

 

The built-in method (str.upper, list.append) callable이다. 예를 들어:

 

str = 'Python Callable'
print(callable(str.upper))  # True

 

Output:

 

True

 

4) Classes

 

모든 클래스는 callable이다. 클래스를 호출하면 클래스의 인스턴스가 생성됩니다.

즉 클래스 호출의 반환값은 클래스 인스턴스이다. 예를 들어:

 

class Counter:
    def __init__(self, start=1):
        self.count = start

    def increase(self):
        self.count += 1

    def value(self):
        return self.count

 

5) Methods

 

메서드는 개체에 바인딩된 함수이므로 callable이다. 예를 들어:

 

print(callable(Counter.increase))  # True

 

Output:

 

True

 

6) Instances of a class

 

클래스가 __call__ 메서드를 구현하는 경우  클래스의 모든 인스턴스는 callable이다.

 

class Counter:
    def __init__(self, start=1):
        self.count = start

    def increase(self):
        self.count += 1

    def value(self):
        return self.count

    def __call__(self):
        self.increase()


    counter = Counter()
    counter()

    print(callable(counter))  # True

 

Output:

 

True

 

Summary

 

  • 객체가 () 연산자를 사용하여 호출될 수 있는 경우 callable이다.
  • Python 내장 함수 callable(객체)를 사용하여 객체가 callable인지 여부를 확인합니다.

'Python Object-oriented Programming' 카테고리의 다른 글

Class attributes  (0) 2023.04.02
Class  (0) 2023.04.02
Object-oriented Programming  (0) 2023.04.02
Property Decorator  (0) 2023.04.01
Metaclass Example  (0) 2023.04.01

댓글