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