[Risolto][Py]Capire se il metodo è chiamato all'interno della classe

di il
2 risposte

[Risolto][Py]Capire se il metodo è chiamato all'interno della classe

class Try(object):
    def example(self):
        print "In or out?"
    
    def main(self):
        self.example()
        
        
Try().main()
Come da titolo, esiste qualche "metodo speciale" per capire se ho chiamato il metodo da dentro la classe o da fuori?
class Try(object):
    def example(self, where = True):
        print "In" if where else "Out"
    
    def main():
        self.example(True)
        
        
Try().main(False)

2 Risposte

  • Re: [Risolto][Py]Capire se il metodo è chiamato all'interno della classe

    Ciao TommyB1992, devi importare il modulo inspect dopodichè:
    
    Stack = inspect.stack() # Ispeziona lo stack
    classe_chiamante = Stack[1][0].f_locals["self"].__class__ #ritorna una lista di record, il primo elemento [1][0] rappresenta il "caller" ovvero la classe chiamante ( nota la keyword self ).
    metodo_chiamato = Stack[1][0].f_code.co_name 
    
    print("La classe è "+str(classe_chiamante)+" il metodo chiamante : "+str(metodo_chiamante)) 
    
    # Chiaramente se la classe non corrisponde con  quella in cui è contenuto il metodo..... :)  
    
  • Re: [Risolto][Py]Capire se il metodo è chiamato all'interno della classe

    Grazie anche se molto in ritardo
Devi accedere o registrarti per scrivere nel forum
2 risposte