[Tutor] Accessing class attributes: use methods only?
Kent Johnson
kent37 at tds.net
Tue Feb 13 22:03:03 CET 2007
Chris Lasher wrote:
> Is it general good practice to access and set class attributes via
> methods only, or is it okay practice to directly interact with class
> attributes? The professor in a class on Perl that I'm taking suggested
> that directly accessing and setting class attributes was a bad idea.
> Just wondering what the current preference in Python is.
Assuming you actually mean instance attributes, not class attributes;
i.e. an attribute that has a value for each instance of a class, not an
attribute that is shared by all instances...
Python practice is to use direct attribute access. If you need to do
something special when an attribute is read or set, you can create a
property. This allows you to define methods to be called when the
attribute is accessed, without having to change the client code.
The use of getters and setters is popular in C++ and Java where it is
painful to change client code from direct attribute access to indirect
access through setters and getters. In Python there is no need for this
as the change only affects the class itself.
Properties are a somewhat advanced feature; here is some more information:
http://www.python.org/download/releases/2.2/descrintro/#property
Kent
More information about the Tutor
mailing list