Instance attributes vs method arguments
Marc 'BlackJack' Rintsch
bj_666 at gmx.net
Tue Nov 25 03:30:15 EST 2008
On Tue, 25 Nov 2008 07:27:41 +0000, John O'Hagan wrote:
> Is it better to do this:
>
> class Class_a():
> def __init__(self, args):
> self.a = args.a
> self.b = args.b
> self.c = args.c
> self.d = args.d
> def method_ab(self):
> return self.a + self.b
> def method_cd(self):
> return self.c + self.d
>
> or this:
>
> class Class_b():
> def method_ab(self, args):
> a = args.a
> b = args.b
> return a + b
> def method_cd(self, args)
> c = args.c
> d = args.d
> return c + d
>
> ?
>
> Assuming we don't need access to the args from outside the class, is
> there anything to be gained (or lost) by not initialising attributes
> that won't be used unless particular methods are called?
The question is if `args.a`, `args.b`, …, are semantically part of the
state of the objects or not. Hard to tell in general.
I know it's a made up example but in the second class I'd ask myself if
those methods are really methods, because they don't use `self` so they
could be as well be functions or at least `staticmethod`\s.
Ciao,
Marc 'BlackJack' Rintsch
More information about the Python-list
mailing list