python decorador / descritor como staticmethod

votos
0

Assim, sendo um novato para Python, eu não posso entender o que está acontecendo aqui ...

Estou tentando definir um decorador / descritor, que tem, entre outras coisas, o comportamento de staticmethod.

Ingenuamente, tentou criar o meu decorador / descritor que herda staticmethod. Que não fez ...

Pergunta 1) Por quê? As regras são aqui diferente? Existe uma média de herdar staticmethod?

De qualquer forma, após a leitura: https://docs.python.org/3/howto/descriptor.html#id9 , eu vim com essa:

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(...)

A execução deste, ele funciona. Excelente.

MAS

Marcas PyCharm my_functioncomo erro, com a seguinte mensagem:

Método deve ter um primeiro parâmetro, normalmente chamado de 'self'

Pergunta 2) que eu fiz algo errado, ou é bug deste PyCharm?

Pergunta 3) Como posso resolver em ambos os casos?

Desde já, obrigado!

Publicado 19/03/2020 em 21:59
fonte usuário
Em outras línguas...                            

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