EDIT2: Grazie a tutti per il vostro aiuto! MODIFICA: all'aggiunta di @staticmethod, funziona. Tuttavia mi sto ancora chiedendo perché sto ricevendo un errore di tipo qui.chiamando una funzione dalla classe in python - modo diverso
Ho appena iniziato OOPS e sono completamente nuovo ad esso. Ho una domanda molto basilare riguardo ai diversi modi in cui posso chiamare una funzione da una classe. Ho un file testClass.py con il codice:
class MathsOperations:
def __init__ (self, x, y):
self.a = x
self.b = y
def testAddition (self):
return (self.a + self.b)
def testMultiplication (self):
return (self.a * self.b)
io chiamo questa classe da un altro file chiamato main.py con il seguente codice:
from testClass import MathsOperations
xyz = MathsOperations(2, 3)
print xyz.testAddition()
Questo funziona senza problemi. Tuttavia, volevo usare la classe in un modo molto più semplice.
Ora ho inserito il seguente codice nel file testClass.py. Ho abbandonato la funzione init questa volta.
class MathsOperations:
def testAddition (x, y):
return x + y
def testMultiplication (a, b):
return a * b
chiamando questo utilizzando;
from testClass import MathsOperations
xyz = MathsOperations()
print xyz.testAddition(2, 3)
questo non funziona. Qualcuno può spiegare cosa sta succedendo in modo errato nel caso 2? Come uso questa lezione?
L'errore che ottengo è "TypeError: testAddition() prende esattamente 2 argomenti (3 data)"
così il tag @staticmethod inserisce automaticamente il parametro self? –
se si utilizza @staticmethod è possibile utilizzare la classe senza prima dichiarare una variabile, ad esempio, in questo caso se si tenta di utilizzare MathOperation.testAddtion (2,3) viene visualizzato un errore "TypeError: metodo non associato" –
No, il decoratore staticmethod elimina la necessità del parametro self. –