4.3 Other attributes (keyword __object__xattributes__)

The keyword __object__xattributes__ is used to define attributes which do not appear in the constructor. Note that the default mode for attributes in __object__xattributes__ is readonly ('r'). If you want this attribute to be readwrite ('rw'), you must specify it like that:

# --
# Copyright (C) CEA, EDF
# Author : Erwan ADAM (CEA)
# --

import unittest

from xdata import *

class A(XObject):
    __object__xattributes__ = [
        XAttribute("x", xtype=XInt(min=0), mode='rw'),
        ]
    pass

class ATestCase(unittest.TestCase):
    def test(self):
        a = A()
        a.x = 1
        self.failUnlessEqual(a.x, 1)
        a.setX(2)
        self.failUnlessEqual(a.getX(), 2)
        return
    pass

if __name__ == '__main__':
    unittest.main()
    pass

Of course, on the same way than attributes defined in __init__xattributes__, you can define your own accessors for the __object__xattributes__ attributes:

# --
# Copyright (C) CEA, EDF
# Author : Erwan ADAM (CEA)
# --

import unittest

from xdata import *

class A(XObject):
    __object__xattributes__ = [
        XAttribute("x", xtype=XInt(min=0), mode='rw'),
        ]
    def setX(self, value):
        self.test = 1
        return
    pass

class ATestCase(unittest.TestCase):
    def test(self):
        a = A()
        a.x = 1
        self.failUnlessEqual(a.test, 1)
        return
    pass

if __name__ == '__main__':
    unittest.main()
    pass