[Tutor] Class: property? function list?
Sean 'Shaleh' Perry
shalehperry@home.com
Mon, 01 Oct 2001 00:49:52 -0700 (PDT)
On 01-Oct-2001 Run-Sun Pan wrote:
> Dear all,
>
> [1] --- "property" in class ???
>
> Is there any "property" in class? For example,
>
> mc = myclass()
> mc.hitcount = 100 #<===== user input
> x = mc.hitcount
> print x
>
> In the above example there's no validation
> whatsoever. As long as the 100 is passed to
> .hitcount, no matter it's a string or even
> other object type, it will be past to x.
>
> I want to have this .hitcount value validated
> before it is returned to other variable x. In
> some other object-oriented languages you can
> define "properties" for a class for this purpose.
> Is there such device in python ?
>
The best I have seen done is to define __setattr__ and __getattr__.
def __setattr__(self, name, vale):
if name == 'hitcount':
if value < 0 or value > 1000:
value = 0
self.dict['hitcount'] = value
def __getattr__(self, name):
return self.dict[name]
and in __init__() you just initialize dict and any variables you maintain.