Hello Pjerrot, Unfortunately the layout of code created by Visual Studio IronPython (do you mean IronPython Studio or Visual Studio Professional?) is a *terrible* way to write Python.
It effectively matches the semantics of C#, but you should not replicate it yourself - do not contain your classes inside a namespace class. Additionally, do not use the 'from XXX import *' - but instead explicitly import the names you want to use. I don't say the last point out of dogma - I think if you make that change you will immediately see what is wrong with the code. All the best, Michael Foord http://www.ironpythoninaction.com/ Pjerrot wrote: > Hi, > > I have problem understanding IronPython. The problem is here: > > Traceback (most recent call last): > File , line 0, in <stdin>##9 > File , line 0, in __import__##4 > File ..\NamespaceTest\program.py, line 28, in Initialize > File ..\NamespaceTest\program.py, line 24, in start > File ..\NamespaceTest\program.py, line 9, in testBar > AttributeError: type object 'ns2' has no attribute 'Bar' > > I try to follow the namspace style created by Visual Studion > IronPython. A namspace is cerated as a class, without a constructor. > Inside the class is another class. The outer class works like a > namespace. > > I create two files each holding a class, Bar and Foo. The files start > with the same "class ns2:" for namspace "ns2". So Bar and Foo belong > to the ns2 namespace. But when I try from another namspace "ns1" to > uit test the classes. The ns2 namespace miss oe of the classes. > > Please give me an explanation. And, if you can, how can I structure > the python code like C#. > > Hope somebody can help > > Pjerrot > > > Attached are the three files: program.py, Bar.py and Foo.py. > ---------------------------------- > program.py: > from Bar import * > from Foo import * > > class ns1: #namespace > def testBar(): > bar = ns2.Bar(1) > if bar.Y == 1: > print "Bar.Y test OK" > else: > print "Bar.Y test failed" > def testFooBar(): > b = ns2.Bar.Bar(1) > fb = ns2.FooBar(b) > if fb.B == b.B: > print "FooBar.B test OK" > else: > print "FooBar.B test failed" > > @staticmethod > def start(): > ns1.testBar() > ns1.testFooBar() > > if __name__ == "program": > ns1.start() > ------------------------------------- > Bar.py: > class ns2: # namespace > > class Bar(object): > def __init__(self, y=0): > self._y = y > > # Y property > def getY(self): > return self._y > def setY(self, value): > self._y = value > Y = property(getY,setY) > ------------------------------------------ > Foo.py > class ns2: # namespace > > class FooBar(object): > def __init__(self,b=None): > self._b = b > > # B property > def getB(self): > return self._b > def setB(self, value): > self._b = value > B = property(getB,setB) > ------------------- > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
