[IronPython] Problem with 3 modules, classes and missing attributes

Pjerrot janrou at gmail.com
Sun Apr 6 02:09:29 CEST 2008


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)
-------------------



More information about the Ironpython-users mailing list