TL; DR Wie finde ich heraus, ob eine Funktion mit @classmethod
oder etwas mit dem gleichen Effekt definiert wurde?Überprüfen Sie, ob eine Funktion @classmethod verwendet
Mein Problem
Für eine Klasse Dekorateur Umsetzung würde ich prüfen möchte, ob eine Methode, um die Klasse als erstes Argument nimmt, zum Beispiel erreicht, wie sie über
@classmethod
def function(cls, ...):
gefunden Eine Lösung zur Überprüfung auf @staticmethod
über das Modul types
(isinstance(foo, types.UnboundMethodType)
ist False
, wenn die foo
statisch ist, siehe here), Aber nichts finden, wie man nicht für @classmethod
so tun
Kontext
Was ich versuche, etwas entlang der Linien von
def class_decorator(cls):
for member in cls.__dict__:
if (isclassmethod(getattr(cls, member))):
# do something with the method
setattr(cls, member, modified_method)
return cls
zu tun ist, und ich tun nicht wissen, wie man das implementiert, was ich in diesem Beispiel isclassmethod
nannte
Dies gilt nur für Python 3 –
Gibt es etwas für Python 2 und Python 3 (persönlich benutze ich 2,7) – hlt