Ho codice che è simile:C'è un modo per ottenere l'accesso alla classe di un metodo, quando hai a disposizione solo un callable
class Foo:
def foo(self):
pass
class Bar:
def foo(self):
pass
f = random.choice((Foo().foo, Bar().foo))
Come posso accedere Bar
o Foo
da f?
f.__dict__
è di poco o nessun aiuto, ma come repr(f)
dà <bound method Bar.foo of <__main__.Bar object at 0x10c6eec18>>'
deve essere possibile, ma come?
Nitpick: il tipo di istanza non è necessariamente la classe in cui è stata definita la funzione; solo perché il metodo è associato a un'istanza X, non significa che la funzione non possa essere definita nella classe Y. Ma detto questo, questo codice produrrà sicuramente l'output corretto nel 99,99% degli scenari del mondo reale. E comunque non è chiaro quale sia l'uscita prevista dell'OP in un caso dello 0,01%. –