python decorator / descriptor cum ar fi staticmethod

voturi
0

Deci, fiind un incepator la Python, eu nu pot înțelege ce se întâmplă aici ...

Am încercat să definească un decorator / descriptor, care are, printre altele, comportamentul staticmethod.

Naiv, a încercat să creeze decorator meu / descriptor care moștenește staticmethod. Asta nu a făcut ...

Întrebarea 1) De ce? Sunt regulile de aici diferite? Există o medie a mosteni staticmethod?

Oricum, după lectură: https://docs.python.org/3/howto/descriptor.html#id9 , am venit cu acest lucru:

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

Rularea asta, funcționează. Excelent.

DAR

Mărci PyCharm my_functionca eroare, cu următorul mesaj:

Metoda trebuie să aibă un prim parametru, de obicei, numit „auto“

Întrebarea 2) Am făcut ceva greșit, sau este bug acest PyCharm lui?

Întrebarea 3) Cum pot rezolva , în ambele cazuri?

Mulțumesc anticipat!

Întrebat 19/03/2020 la 21:59
sursa de către utilizator
În alte limbi...                            

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