Maison >développement back-end >Tutoriel Python >Comment obtenir une liste de méthodes au sein d'une classe Python ?

Comment obtenir une liste de méthodes au sein d'une classe Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 20:40:02290parcourir

How to Obtain a List of Methods within a Python Class?

Obtenir une liste de méthodes dans une classe Python

Itérer dans les méthodes d'une classe ou gérer ses objets différemment en fonction de ses méthodes nécessite de récupérer un liste de ces méthodes. Cet article propose deux approches pour y parvenir.

Utilisation d'inspect.getmembers()

Cette fonction prend une classe ou une instance comme premier argument et une fonction de prédicat comme premier argument. deuxième argument. La fonction de prédicat filtre la liste renvoyée en fonction d'un critère spécifique. Pour récupérer une liste de méthodes dans une classe, nous pouvons passer inspect.ismethod comme fonction de prédicat.

<code class="python">from inspect import getmembers, ismethod

class MyClass:
    def method1(self):
        pass

    def method2(self):
        pass    

# Python 2.x
methods = getmembers(MyClass, ismethod)

# Python 3.x
methods = getmembers(MyClass, isfunction)</code>

La variable méthodes contiendra une liste de tuples, chaque tuple contenant le nom de la méthode et l'objet de la méthode. .

Utilisation de dir()

La fonction dir() renvoie une liste de tous les attributs d'un objet, y compris les méthodes. Cependant, il inclut également des attributs non-méthode, qui peuvent nécessiter un filtrage supplémentaire.

<code class="python">methods = [m for m in dir(MyClass) if callable(getattr(MyClass, m))]</code>

Le filtre callable() vérifie si un attribut est appelable, indiquant une méthode. Gardez à l'esprit que cette approche peut ne pas être aussi fiable que l'utilisation de inspect.getmembers() car elle peut inclure des attributs non liés à la méthode.

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!

Déclaration:
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