Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Static class properties (read-only) (http://www.velocityreviews.com/forums/t320726-static-class-properties-read-only.html)

Greg Brunet 08-07-2003 04:19 PM

Static class properties (read-only)
 
In puzzling over classes, I'm wondering if classes can have read-only
static properties? I certainly seem to be able to do create static
properties like this:

class C(object):
count = 0

def __init__(self,s):
C.count += 1
self.Name = s

def __del__(self):
C.count -= 1

and C.count should have a count of the number of its instances that have
been created. However, someone could set the value directly. I know
that using get/set methods, I can make a read-only property at the
object/instance level. Can this be done at the class level? Thanks,

--
Greg


Aahz 08-07-2003 05:47 PM

Re: Static class properties (read-only)
 
In article <vj4v20o2qfi7c9@corp.supernews.com>,
Greg Brunet <gregbrunet@NOSPAMsempersoft.com> wrote:
>
>In puzzling over classes, I'm wondering if classes can have read-only
>static properties? I certainly seem to be able to do create static
>properties like this:
>
>class C(object):
> count = 0
>
> def __init__(self,s):
> C.count += 1
> self.Name = s
>
> def __del__(self):
> C.count -= 1
>
>and C.count should have a count of the number of its instances that have
>been created. However, someone could set the value directly. I know
>that using get/set methods, I can make a read-only property at the
>object/instance level. Can this be done at the class level? Thanks,


Nope. Gotta do a metaclass. <evil grin>
--
Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/

This is Python. We don't care much about theory, except where it intersects
with useful practice. --Aahz

Terry Reedy 08-07-2003 06:03 PM

Re: Static class properties (read-only)
 

"Greg Brunet" <gregbrunet@NOSPAMsempersoft.com> wrote in message
news:vj4v20o2qfi7c9@corp.supernews.com...
> In puzzling over classes, I'm wondering if classes can have

read-only
> static properties? I certainly seem to be able to do create static
> properties like this:
>
> class C(object):
> count = 0
>
> def __init__(self,s):
> C.count += 1
> self.Name = sCC
>
> def __del__(self):
> C.count -= 1
>
> and C.count should have a count of the number of its instances that

have
> been created. However, someone could set the value directly.


Prefixing count with a single underscore will tell others that is is
private-- they should not write it and should not depend on being able
to read it in future versions. Prefixing with 2 underscores will
invoke name-mangling, which you need to read about before using.

TJR




Alex Martelli 08-07-2003 06:23 PM

Re: Static class properties (read-only)
 
Greg Brunet wrote:

> In puzzling over classes, I'm wondering if classes can have read-only
> static properties? I certainly seem to be able to do create static
> properties like this:
>
> class C(object):
> count = 0
>
> def __init__(self,s):
> C.count += 1
> self.Name = s
>
> def __del__(self):
> C.count -= 1
>
> and C.count should have a count of the number of its instances that have
> been created. However, someone could set the value directly. I know
> that using get/set methods, I can make a read-only property at the
> object/instance level. Can this be done at the class level? Thanks,


Yes, you can make a class have a read-only property, but you can do this
only by using a custom metaclass. Once you do make it read-only, of
course, nobody can set it, including methods such as __init__ & __del__!-)


Alex



All times are GMT. The time now is 08:27 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.