python διακοσμητής / Περιγραφέας όπως staticmethod

ψήφοι
0

Έτσι, είναι ένας αρχάριος σε Python, δεν μπορώ να καταλάβουν τι συμβαίνει εδώ ...

Είμαι προσπαθεί να ορίσει ένα διακοσμητή / Περιγραφέας, που έχει, μεταξύ άλλων, τη συμπεριφορά του staticmethod.

Αφελώς, προσπάθησε να δημιουργήσει διακοσμητή / Περιγραφέας μου, που κληρονομεί staticmethod. Αυτό δεν το κάνουμε ...

Ερώτηση 1) Γιατί; Είναι οι κανόνες εδώ διαφορετικό; Είναι ένα μέσο για να κληρονομήσει εκεί staticmethod;

Anyways, μετά την ανάγνωση: https://docs.python.org/3/howto/descriptor.html#id9 , ήρθα με αυτό:

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

Τρέξιμο αυτό, λειτουργεί. Εξοχος.

ΑΛΛΑ

Σήματα PyCharm my_functionως λάθος, με το ακόλουθο μήνυμα:

Η μέθοδος πρέπει να έχει μια πρώτη παράμετρο, που συνήθως ονομάζεται «αυτο»

Ερώτηση 2) έχω κάνει κάτι λάθος, ή είναι bug αυτού του PyCharm του;

Ερώτηση 3) Πώς μπορώ να διορθώσω σε κάθε περίπτωση;

Ευχαριστώ εκ των προτέρων!

Δημοσιεύθηκε 19/03/2020 στις 21:59
πηγή χρήστη
Σε άλλες γλώσσες...                            

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