python dekoratør / descriptor som staticmethod

stemmer
0

Så, å være en nybegynner til Python, jeg kan ikke forstå hva som skjer her ...

Jeg prøver å definere en dekoratør / descriptor, som har blant annet oppførselen til staticmethod.

Naivt, prøvde å lage min dekoratør / descriptor som arver staticmethod. Det gjorde ikke ...

Spørsmål 1) Hvorfor? Er reglene her annerledes? Er det et middel for å arve staticmethod?

Anyways, etter lesing: https://docs.python.org/3/howto/descriptor.html#id9 , kom jeg opp med dette:

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

Kjører dette, det fungerer. Utmerket.

MEN

PyCharm merkene my_functionsom feil, med følgende melding:

Metoden må ha en første parameter, vanligvis kalt 'selv'

Spørsmål 2) Har jeg gjort noe galt, eller er dette PyCharm sin feil?

Spørsmål 3) Hvordan kan jeg fikse i begge tilfeller?

Takk på forhånd!

Publisert på 19/03/2020 klokken 21:59
kilden bruker
På andre språk...                            

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