Comment vérifier si un objet est appelable en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous allez explorer comment déterminer si un objet est appelable (callable) en Python. Vous commencerez par comprendre ce qui constitue un objet appelable, y compris les fonctions, les méthodes et les classes avec la méthode __call__. Grâce à des exemples pratiques, vous apprendrez à identifier les objets appelables et à observer leur comportement lorsqu'ils sont invoqués.

Le laboratoire vous guidera dans la création d'un fichier Python, callable_example.py, et dans l'exécution de extraits de code (code snippets) qui démontrent les fonctions et les classes appelables. Vous observerez la sortie de ces exemples, renforçant ainsi votre compréhension du fonctionnement des objets appelables en Python. Ensuite, le laboratoire présentera la fonction callable() pour vérifier explicitement si un objet est appelable.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/function_definition -.-> lab-559614{{"Comment vérifier si un objet est appelable en Python"}} python/build_in_functions -.-> lab-559614{{"Comment vérifier si un objet est appelable en Python"}} python/classes_objects -.-> lab-559614{{"Comment vérifier si un objet est appelable en Python"}} python/catching_exceptions -.-> lab-559614{{"Comment vérifier si un objet est appelable en Python"}} end

Comprendre les objets appelables (Callable Objects)

Dans cette étape, vous allez apprendre à propos des objets appelables en Python. Comprendre les objets appelables est essentiel pour travailler avec des fonctions, des classes et d'autres objets qui peuvent être invoqués ou appelés.

En Python, un objet appelable est tout objet qui peut être appelé en utilisant la syntaxe d'appel de fonction (). Cela inclut les fonctions, les méthodes, les classes et les instances de classes qui définissent la méthode __call__.

Commençons par examiner une simple fonction :

def my_function():
    return "Hello from my_function!"

print(my_function())

Créez un fichier nommé callable_example.py dans votre répertoire ~/project en utilisant l'éditeur VS Code. Copiez et collez le code ci-dessus dans le fichier.

Maintenant, exécutez le script en utilisant la commande suivante dans le terminal :

python callable_example.py

Vous devriez voir la sortie suivante :

Hello from my_function!

Ici, my_function est un objet appelable car vous pouvez l'appeler en utilisant des parenthèses ().

Maintenant, regardons un autre exemple utilisant une classe :

class MyClass:
    def __init__(self, name):
        self.name = name

    def __call__(self):
        return f"Hello from {self.name}!"

instance = MyClass("MyClass instance")
print(instance())

Ajoutez ce code à votre fichier callable_example.py, en remplaçant le contenu précédent.

Exécutez le script à nouveau :

python callable_example.py

Vous devriez voir la sortie suivante :

Hello from MyClass instance!

Dans ce cas, MyClass est appelable car elle définit la méthode __call__. Lorsque vous créez une instance de MyClass et que vous l'appelez comme une fonction (instance()), la méthode __call__ est exécutée.

Les objets appelables sont fondamentaux pour la flexibilité de Python et sont largement utilisés dans diverses paradigmes de programmation, y compris la programmation fonctionnelle et la programmation orientée objet.

Utiliser la fonction callable()

Dans cette étape, vous allez apprendre à utiliser la fonction callable() en Python pour vérifier si un objet est appelable. La fonction callable() est une fonction intégrée qui renvoie True si l'objet passé en paramètre semble être appelable, et False dans le cas contraire.

Commençons par un exemple simple utilisant une fonction et une variable :

def my_function():
    return "Hello from my_function!"

x = 10

print(callable(my_function))
print(callable(x))

Ajoutez ce code à votre fichier callable_example.py, en remplaçant le contenu précédent.

Maintenant, exécutez le script en utilisant la commande suivante dans le terminal :

python callable_example.py

Vous devriez voir la sortie suivante :

True
False

Ici, callable(my_function) renvoie True car my_function est une fonction et est donc appelable. callable(x) renvoie False car x est une variable entière et n'est pas appelable.

Maintenant, regardons un autre exemple utilisant une classe :

class MyClass:
    def __init__(self, name):
        self.name = name

    def __call__(self):
        return f"Hello from {self.name}!"

instance = MyClass("MyClass instance")

print(callable(MyClass))
print(callable(instance))

Ajoutez ce code à votre fichier callable_example.py, en remplaçant le contenu précédent.

Exécutez le script à nouveau :

python callable_example.py

Vous devriez voir la sortie suivante :

True
True

Dans ce cas, callable(MyClass) renvoie True car MyClass est une classe et est donc appelable (vous pouvez créer des instances d'elle). callable(instance) renvoie également True car instance est une instance de MyClass, et MyClass définit la méthode __call__, ce qui rend ses instances appelables.

La fonction callable() est utile pour vérifier si un objet peut être appelé avant de tenter de l'appeler, ce qui peut aider à prévenir les erreurs dans votre code.

Tester avec try-except pour l'invocation

Dans cette étape, vous allez apprendre à utiliser les blocs try-except pour gérer les erreurs potentielles lors de l'appel d'objets en Python. Cela est particulièrement utile lorsque vous n'êtes pas sûr qu'un objet est appelable ou si son appel peut lever une exception.

Commençons par un exemple où nous essayons d'appeler un objet qui peut ne pas être appelable :

def my_function():
    return "Hello from my_function!"

x = 10

objects_to_test = [my_function, x]

for obj in objects_to_test:
    try:
        result = obj()
        print(f"Object is callable, result: {result}")
    except TypeError as e:
        print(f"Object is not callable: {e}")

Ajoutez ce code à votre fichier callable_example.py, en remplaçant le contenu précédent.

Maintenant, exécutez le script en utilisant la commande suivante dans le terminal :

python callable_example.py

Vous devriez voir la sortie suivante :

Object is callable, result: Hello from my_function!
Object is not callable: 'int' object is not callable

Dans cet exemple, nous parcourons une liste d'objets et essayons d'appeler chacun d'eux. Le bloc try tente d'appeler l'objet. Si l'objet est appelable et que l'appel réussit, le résultat est affiché. Si l'objet n'est pas appelable, une TypeError est levée et le bloc except capture l'exception et affiche un message approprié.

Maintenant, considérons un cas où l'objet est appelable, mais où son appel peut lever un autre type d'exception :

def my_function(a, b):
    return a / b

try:
    result = my_function(10, 0)
    print(f"Result: {result}")
except ZeroDivisionError as e:
    print(f"Error: {e}")
except TypeError as e:
    print(f"Error: {e}")

Ajoutez ce code à votre fichier callable_example.py, en remplaçant le contenu précédent.

Exécutez le script à nouveau :

python callable_example.py

Vous devriez voir la sortie suivante :

Error: division by zero

Dans ce cas, my_function est appelable, mais l'appeler avec b = 0 lève une ZeroDivisionError. Le bloc try-except capture cette exception spécifique et la gère de manière élégante.

L'utilisation de blocs try-except vous permet d'écrire un code plus robuste et fiable en anticipant et en gérant les erreurs potentielles qui peuvent survenir lors de l'appel d'objets.

Résumé

Dans ce laboratoire (lab), vous avez appris à connaître les objets appelables en Python, qui sont des objets pouvant être invoqués en utilisant la syntaxe d'appel de fonction (). Cela inclut les fonctions, les méthodes, les classes et les instances de classes qui définissent la méthode __call__. Vous avez exploré des exemples d'une simple fonction et d'une classe avec la méthode __call__, montrant comment elles peuvent être appelées et exécutées.

Vous avez également commencé à apprendre à utiliser la fonction callable() pour vérifier si un objet est appelable.