• [^] # Re: arf

    Posté par (site web personnel) . En réponse au message Accès à la liste des méthodes de l'intérieur d'une classe. Évalué à 3.

    Pas tout à fait, selon que l'on parle de la méthode de classe ou de la méthode d'instance de classe, Python ne nous crée pas les méthode de la même manière : les méthodes d'instances sont des méthodes liées ( bound method ), alors que celles de classes ne le sont pas. ( C'est ce qui correspond au self passé en premier argument de chacune des méthodes ).

    >>> class A(object):
    .........def func(self):
    ...............pass
    ...

    >>> A.func
    <unbound method A.func>
    >>> a = A()
    >>> a.func
    <bound method A.func of <__main__.A object at 0xb775da6c>>
    >>>

    Cela signifie que la méthode est liée à une instance et qu'il n'est pas possible de l'utiliser de manière séparée de l'instance ( c'est le but de la propriété im_self ) :

    >>> my_func= a.func
    >>> my_func.im_self
    <__main__.A object at 0xb775da6c>

    >>> my_func.im_self == a
    True

    C'est pas explicite dans Python, et cela peut poser des problèmes difficile à comprendre au moment où l'on s'y retrouve confronté.