Comment implémenter la surcharge de méthodes en Python ?

Barbara Streisand
Libérer: 2024-10-22 22:23:03
original
401 Les gens l'ont consulté

How to Implement Method Overloading in Python?

Comprendre la surcharge de méthodes en Python

Lorsque vous essayez d'implémenter la surcharge de méthodes en Python, vous pouvez rencontrer un comportement inattendu, comme le montrent les exemples fournis. En effet, Python ne prend pas en charge la véritable surcharge de méthodes, qui implique de déclarer plusieurs fonctions avec le même nom mais des signatures différentes.

Approche méthode de Python

En Python, vous pouvez créez une fonction unique qui gère différents scénarios en fonction du nombre et du type d'arguments qu'elle reçoit. Ceci est réalisé grâce à l'utilisation de valeurs d'argument par défaut, comme le montre la définition de classe suivante :

class A:
    def stackoverflow(self, i='some_default_value'):
        print('only method')
Copier après la connexion

Dans ce cas, la méthode stackoverflow a un seul argument par défaut i. Lorsque la méthode est appelée sans aucun argument, la valeur par défaut de « some_default_value » sera utilisée. Alternativement, vous pouvez fournir une valeur spécifique pour i lors de l'appel de la méthode.

Fonctions génériques à répartition unique

Python 3.4 a introduit singledispatch, une fonctionnalité intégrée qui vous permet pour définir des fonctions génériques qui répartissent sur le type de leur premier argument. Cela permet une approche plus flexible et extensible de la surcharge de méthodes.

Pour utiliser singledispatch :

from functools import singledispatch

@singledispatch
def fun(arg, verbose=False):
    # Handle the default case

@fun.register(int)
def _(arg, verbose=False):
    # Handle the integer case

@fun.register(list)
def _(arg, verbose=False):
    # Handle the list case
Copier après la connexion

Dans cet exemple, la fonction fun distribuera sur le type de son premier argument, en appelant la fonction enregistrée appropriée en fonction de ce type.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!