python natěrač / deskriptor jako staticmethod

hlasů
0

Tak, že začátečník Python, nemohu pochopit, co se to tu děje ...

Snažím se definovat dekoratér / deskriptor, který má, mimo jiné chování staticmethod.

Naivně se snažil vytvořit svůj dekoratér / popisovač jaký dědí staticmethod. Že neudělal ...

Otázka 1) Proč? Jsou pravidla zde liší? Existuje střední zdědit staticmethod?

Tak jako tak, po přečtení: https://docs.python.org/3/howto/descriptor.html#id9 jsem přišel s tímto:

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

Running to, funguje to. Vynikající.

ALE

Zn PyCharm my_functionjako chyba, s následující zprávou:

Metoda musí být první parametr, obvykle volal ‚já‘

Otázka 2) jsem udělal něco špatně, nebo je to PyCharm je chyba?

Otázka 3) Jak mohu opravit v obou případech?

Díky předem!

Položena 19/03/2020 v 21:59
zdroj uživatelem
V jiných jazycích...                            

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