voglio capire il motivo per cui questo codice funziona:Metodo tuple richiede esplicita `self` argomento
class MyClass(object):
def f(self): print "Hello"
ff = f
def g(self): self.ff()
MyClass().g()
mentre questo non lo fa:
class MyClass(object):
def f(self): print "Hello"
ff = f,
def g(self): self.ff[0]()
MyClass().g()
in quanto ha bisogno di un argomento self.ff[0](self)
:
TypeError: f() takes exactly 1 argument (0 given)
Non è self.ff[0] == self.f
come nel caso precedente self.ff == self.f
?
Non sono sicuro al 100%, ma i metodi sono funzioni che fanno parte della classe. Nel tuo secondo esempio, ff è una tupla, non una funzione e ff [0] non è un membro di MyClass. È solo una funzione –
perché 'ff [0]' non è un membro della classe? –
E 'un titolo migliore? È una domanda interessante, grazie per questo! –