instance vs class attributes
jstroud at mbi.ucla.edu
Wed Mar 30 03:37:50 CEST 2005
> Here are my questions:
> 1) What are the benefits of using a member variable without the 'self'
> qualifier? (I think this is because you can use _x without an
> instance of A().)
No such thing as a benefit here. self.a inside a method is the same as a
outside (see code below for what I mean).
> 2) Is there a preferred coding style (_x vs self.x)?
This is essentially a non sequitur.
> 3) Should private data be written as self._x instead of self.x?
This is a long standing debate. The usual answer is "we are all grownups
here", meaning that self.x is preferred. However, I personally like self._x
to let potential users of my code know that I intended it to be private.
The code I was talking about:
>>> class bob:
... a = 2
... def get_a(self):
... return self.a
... def set_a(self,an_a):
... self.a = an_a
>>> abob = bob()
>>> class carol:
... self.a = 22
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in carol
NameError: name 'self' is not defined
James Stroud, Ph.D.
UCLA-DOE Institute for Genomics and Proteomics
Los Angeles, CA 90095
More information about the Python-list