python decorator / descrittore come staticmethod

voti
0

Quindi, essendo un principiante a Python, non riesco a capire che cosa sta succedendo qui ...

Sto cercando di definire un decoratore / descrittore, che ha, tra le altre cose, il comportamento di staticmethod.

Ingenuamente, ha cercato di creare il mio decoratore / descrittore che eredita staticmethod. Che non ha fatto ...

Domanda 1) Perché? Sono le regole qui di diverso? C'è una media di ereditare staticmethod?

In ogni modo, dopo aver letto: https://docs.python.org/3/howto/descriptor.html#id9 , sono arrivato fino a questo:

class my_descriptor(object):
    def __init__(self, f):
        self._f = staticmethod(f)

    def __get__(self, obj, obj_type=None):
        res = self._f.__get__(obj, obj_type)()

        # HERE I DO MY STUFF...

        return res


class MyClass:
    @my_descriptor
    def my_function():
        return MyObject(...)

L'esecuzione di questo, funziona. Eccellente.

MA

Marchi PyCharm my_functioncome errore, con il seguente messaggio:

Metodo deve avere un primo parametro, di solito chiamato 'sé'

Domanda 2) Ho fatto qualcosa di sbagliato, o è bug di questo PyCharm?

Domanda 3) Come posso risolvere in entrambi i casi?

Grazie in anticipo!

È pubblicato 19/03/2020 alle 21:59
fonte dall'utente
In altre lingue...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more