[risolto][Py]Capire se il metodo è chiamato all'interno...

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 862
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

[risolto][Py]Capire se il metodo è chiamato all'interno...

Messaggio da TommyB1992 »

Codice: Seleziona tutto

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?

Codice: Seleziona tutto

class Try(object):
    def example(self, where = True):
        print "In" if where else "Out"
    
    def main():
        self.example(True)
        
        
Try().main(False)
Ultima modifica di TommyB1992 il martedì 6 giugno 2017, 13:42, modificato 1 volta in totale.
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Py]Capire se il metodo è chiamato all'interno della cla

Messaggio da crap0101 »

guarda i moduli inspect e traceback...
per dare un'idea:

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ cat ex.py
import inspect
import traceback

class Foo:
    def __init__ (self, bar=1):
        self.bar = bar
        self.baz()
    def baz (self):
        frame = inspect.currentframe()
        outframe = inspect.getouterframes(frame)[1][0]
        info = inspect.getframeinfo(outframe)
        print("I'm baz! (called from {})".format(info.function))
        del frame, outframe

if __name__ == '__main__':
    Foo().baz()
crap0101@orange:/tmp/foo$ python ex.py
I'm baz! (called from __init__)
I'm baz! (called from <module>)
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 862
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Re: [Py]Capire se il metodo è chiamato all'interno della cla

Messaggio da TommyB1992 »

grazie
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti