Hi,
Please look at the following code:
import metakit.metakit as mk
def make_view ():
st = mk.storage()
vw = st.getas( "test[val:I]" )
for i in xrange(3): vw.append( val=i )
print 'inside make_view():'
print ' view obj: ', vw
print ' structure: ', vw.structure()
for row in vw: print ' row.val= ', row.val
return vw
def test1 ():
v2 = make_view()
print 'outside make_view()'
print ' view obj: ', v2
print ' structure: ', v2.structure()
for row in v2: print ' row.val= ', row.val
if __name__ == '__main__':
print 'metakit version ', mk.version
test1()
When running the code, I got the following output & error:
metakit version 2.4.9.3
inside make_view():
view obj: <PyView object at 8f95c0>
structure: [Property('I', 'val')]
row.val= 0
row.val= 1
row.val= 2
outside make_view()
view obj: <PyView object at 8f95c0>
structure: []
row.val=
Traceback (most recent call last):
File "test2.py", line 48, in ?
test1()
File "test2.py", line 21, in test1
for row in v2: print ' row.val= ', row.val
AttributeError: val
A similar problem occurs when I store the view as an instance var in
an object and then access it later:
class testmk ( object ):
def __init__ ( self ):
st = mk.storage()
self.vw = st.getas( "test[val:I]" )
for i in xrange(3): self.vw.append( val=i )
def prtvw ( self ):
print 'tmk view obj: ', self.vw
print 'tmk: structure: ', self.vw.structure()
for row in self.vw: print 'tmk: row.val= ', row.val
def test_obj ():
tmk = testmk()
tmk.prtvw()
if __name__ == '__main__':
print 'metakit version ', mk.version
test_obj()
The resulting output and error are:
metakit version 2.4.9.3
tmk view obj: <PyView object at 8df7d0>
tmk: structure: []
tmk: row.val=
Traceback (most recent call last):
File "test2.py", line 69, in ?
test_obj()
File "test2.py", line 65, in test_obj
tmk.prtvw()
File "test2.py", line 61, in prtvw
for row in self.vw: print 'tmk: row.val= ', row.val
AttributeError: val
I can circumvent this problem by manipulating the storage object
instead. Then whenever I need the view, I can just call
storage.view(...). This seems to be OK.
Am I doing something wrong or could there be a possible bug?
I'm using Active Python v2.3.2 on Win XP.
Thanks!
--
Cheers,
choppystride
_____________________________________________
Metakit mailing list - [EMAIL PROTECTED]
http://www.equi4.com/mailman/listinfo/metakit