I was always wondering about two things I tend to do in my little projects. Sometimes I will have this design:
class FooClass ... self.foo = "it's a bar" self._do_some_stuff(self) def _do_some_stuff(self): print(self.foo)
And sometimes this one:
class FooClass2 ... self.do_some_stuff(foo="it's a bar") def do_some_stuff(self, foo): print(foo)
Although I roughly understand the differences between functional and class approaches, I struggle with the design.
For example, in
self.foo is always accessible as an attribute. If there are numerous calls to it, is that faster than making
foo a local variable that is passed from method to method (like in
FooClass2)? What happens in memory in both cases?
FooClass2 is preferred (ie. I don't need to access
foo) and other attributes inside do not change their states (the class is executed once only and returns the result), should the code then be written as a series of functions in a module?