python decorateur / descriptor zoals staticmethod

stemmen
0

Dus, als een beginner tot Python, ik kan niet begrijpen wat er hier aan de hand ...

Ik ben op zoek naar een decorateur / descriptor, dat heeft, onder andere, het gedrag van de te definiëren staticmethod.

Naïef, probeerde mijn decorateur / descriptor die erft creëren staticmethod. Dat niet doen ...

Vraag 1) Waarom? Zijn de regels hier anders? Is er een middel om erven staticmethod?

Hoe dan ook, na het lezen: https://docs.python.org/3/howto/descriptor.html#id9 , ik kwam met dit:

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

Het uitvoeren van deze, het werkt. Uitstekend.

MAAR

PyCharm merken my_functionals fout met het volgende bericht:

Methode moet een eerste parameter hebben, meestal aangeduid met 'zelf'

Vraag 2) Heb ik iets verkeerds gedaan, of is dit PyCharm bug?

Vraag 3) Hoe kan ik dit oplossen in beide gevallen?

Bij voorbaat bedankt!

De vraag is gesteld op 19/03/2020 om 21:59
bron van user
In andere talen...                            

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