Mi sono sempre chiesto due cose che tendo a fare nei miei piccoli progetti. A volte avrò questo design:
class FooClass
...
self.foo = "it's a bar"
self._do_some_stuff(self)
def _do_some_stuff(self):
print(self.foo)
E a volte questo:
class FooClass2
...
self.do_some_stuff(foo="it's a bar")
def do_some_stuff(self, foo):
print(foo)
Anche se capisco approssimativamente le differenze tra approcci funzionali e di classe, ho difficoltà con il design.
Ad esempio, in FooClass
la self.foo
è sempre accessibile come attributo. Se ci sono numerose chiamate ad esso, è più veloce di fare foo
una variabile locale che viene passata dal metodo al metodo (come in FooClass2
)? Cosa succede in memoria in entrambi i casi?
Se si preferisce FooClass2
(cioè non ho bisogno di accedere a foo
) e gli altri attributi all'interno non cambiano i loro stati (la classe viene eseguita una sola volta e restituisce il risultato), se il codice allora è scritto come una serie di funzioni in un modulo?