472,958 Members | 2,111 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,958 software developers and data experts.

recursion error using setattr and getattr

Hi,

I m trying to implement an object which contains lazy" variables. My
idea is to alter the getattr and the setattr methods. However I keep
on getting a recursion error.

My idea is that the lazy variable can be stored in a variety of
places, Database, PyTables etc. The lazy variable is a large variable
and so I dont want to hold it in memory all of the time, I d rather
just get it when needed and then store it for future work. Most of the
work will be done using var1 and var2

So ......

class LazyBase(object):
self.var1 = 0
self.var2 = None
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
def __setattr__(self, attr, k):
if attr == "var1":
if self.var1 != k
self.var1 = k
if self.lazy != None
self.lazy = None
elif attr == "var2" :
if self.var2 != k
self.var2 = k
if self.lazy != None
self.lazy = None
else:
raise Exception("Attribute")
class SQLLazy(LazyBase):
def __init__(self, name, table="test_table"):
self.table = table
LazyBase.__init__(name)
self.lazy = None
def __getattr__(self, attr):
if attr == "lazy":
if self.lazy == None: # problem line I think
print "Hit Database"
# use sqlalchemy to get the variable
# set self.lazy = lazy
return self.lazy
else:
return self.lazy
else:
try:
return Lazy.__getattr__(attr)
except:
raise Exception("Attribute Exception")
def __setattr__(self, attr, k):
if attr == "lazy"
raise Exception("Cannot alter lazy")
else:
try:
Lazy.__setattr__(attr, k)
except:
raise Exception("Attribute Exception")

if __name__=='__main__':
spam = SQLLazy("Test")
spam.var2 = 10
print spam.lazy
print spam.lazy
spam.var2 = 5
print spam.lazy

I m expecting the output:
Hit Database
Lazy Variable
Lazy Variable
Hit Database
Lazy Variable

However I just get recursion errors. Does anyone have any ideas how I
can implement this sort of thing through my current method, or is
there a better way to accomplish this.

THanks

Nathan
Jun 7 '07 #1
0 1156

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Ray | last post by:
Microsoft Windows XP (C) Copyright 1985-2001 Microsoft Corp. C:\Python22>python setup.py py2exe --icon EXE icon Traceback (most recent call last): File "setup.py", line 7, in ? scripts = ,...
0
by: Chris Young | last post by:
Operating Ubunutu Linux 5.04 on iMac 333mhz Python 2.4.1 in IDLE 1.1.1 In trying to create a interactive drawing framework in Python I came across the idea of binding attributes of one object to...
10
by: telesphore4 | last post by:
I want to inherit fresh copies of some class variables. So I set up a metaclass and meddle with the class variables there. Now it would be convenient to run thru a dictionary rather than...
10
by: Paulo da Silva | last post by:
Hi! In a class C, I may do setattr(C,'x',10). Is it possible to use getattr/setattr for variables not inside classes or something equivalent? I mean with the same result as exec("x=10"). ...
0
by: lllomh | last post by:
Define the method first this.state = { buttonBackgroundColor: 'green', isBlinking: false, // A new status is added to identify whether the button is blinking or not } autoStart=()=>{
2
by: DJRhino | last post by:
Was curious if anyone else was having this same issue or not.... I was just Up/Down graded to windows 11 and now my access combo boxes are not acting right. With win 10 I could start typing...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 4 Oct 2023 starting at 18:00 UK time (6PM UTC+1) and finishing at about 19:15 (7.15PM) The start time is equivalent to 19:00 (7PM) in Central...
0
tracyyun
by: tracyyun | last post by:
Hello everyone, I have a question and would like some advice on network connectivity. I have one computer connected to my router via WiFi, but I have two other computers that I want to be able to...
3
NeoPa
by: NeoPa | last post by:
Introduction For this article I'll be using a very simple database which has Form (clsForm) & Report (clsReport) classes that simply handle making the calling Form invisible until the Form, or all...
1
by: Teri B | last post by:
Hi, I have created a sub-form Roles. In my course form the user selects the roles assigned to the course. 0ne-to-many. One course many roles. Then I created a report based on the Course form and...
3
by: nia12 | last post by:
Hi there, I am very new to Access so apologies if any of this is obvious/not clear. I am creating a data collection tool for health care employees to complete. It consists of a number of...
0
isladogs
by: isladogs | last post by:
The next online meeting of the Access Europe User Group will be on Wednesday 6 Dec 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, Mike...
2
by: GKJR | last post by:
Does anyone have a recommendation to build a standalone application to replace an Access database? I have my bookkeeping software I developed in Access that I would like to make available to other...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.