Ich habe eine Klasse, wo die gemeinsame Variable self.a nach einer sehr schweren Berechnung erhalten wird, die viel Zeit erfordert:Wird die Eigenvariable mehrmals berechnet, wenn Funktionen in Python mehr als einmal aufgerufen werden?
class MyClass(object):
def __init__(self):
# ----------------------------------
# function computationally demanding
out = demanding_function() # In this example, the output is a list of characters ['A','X','R','N','L']
# ----------------------------------
self.a = out
def fun1(self, string):
out = []
for letter in self.a:
out.append(string+letter)
return out
def fun2(self, number):
out = []
for letter in self.a:
out.append(str(number)+letter)
return out
o = MyClass()
x = o.fun1('Hello ')
y = o.fun2(2)
Wie Sie sehen können, self.a
durch die Funktionen verwendet wird fun1
und fun2
. Hier ist meine Frage: Wenn ich diese 2 Funktionen anrufe, wird die demanding_function()
mehrfach oder nur einmal ausgeführt?
Hinweis: Dies ist ein allgemeines Beispiel und die Variablen haben keine spezielle Bedeutung
Nein. Say 'fordernd_funktion()' gibt 1 aus 'out == 1' und daher 'self.a == 1'. Von nun an wird, wenn Sie seine Methoden für die Instanz verwenden, einfach der Wert verwendet, der in 'self.a' gespeichert ist. Das ist 1. Solange Sie keine Instanz initialisieren, wird die Methode' __init__' niemals ausgeführt. – spicypumpkin