Of course, as XAttributeWithComments inherit from XAttribute, it
can be used in __init__xattributes__ to describe other classes.
See the following:
# --
# Copyright (C) CEA, EDF
# Author : Erwan ADAM (CEA)
# --
import unittest
from xdata import *
class XAttributeWithComments(XAttribute):
__init__xattributes__ = XAttribute.__init__xattributes__ + [
XAttribute("en_comment", xtype=XString(), default_value=""),
XAttribute("fr_comment", xtype=XString(), default_value=""),
XAttribute("de_comment", xtype=XString(), default_value=""),
]
pass
class Point(XNamedObject):
__init__xattributes__ = [
XAttributeWithComments("x", xtype=XFloat(), en_comment="x coordinate"),
XAttributeWithComments("y", xtype=XFloat(), en_comment="y coordinate"),
XAttributeWithComments("z", xtype=XFloat(), en_comment="z coordinate"),
]
pass
class PointTestCase(unittest.TestCase):
def test(self):
#
x = Point(0, 0, 0)
#
xattrs = x.__class__.__init__xattributes__
xattr1 = xattrs[0]
self.failUnlessEqual(xattr1.en_comment, "x coordinate")
self.failUnlessEqual(xattr1.fr_comment, "")
return
pass
if __name__ == '__main__':
unittest.main()
pass