> It is currently possible to add new attributes using the standard python > notation, to existing C# objects. > > like that: > > #C is C# class > > cInstance = C() > c.NewProperty = "hop" #NewProperty Property is not defined at the > C# level. > > My questions: > > 1: is this the desired/expected behaviour? > 2: is this usable at C# level (I should test, I suppose, using > introspection ;-) > > --> I find it sometimes annoying not to know that I am defining a new > attribute, because such dynamicity is not expected at C# level (well at > python level).
Hi Stan - Instance of managed class have Python semantics, meaning that you can set arbitrary attributes on the instance. If the attribute maps to a true managed attribute (field, property, etc.) then the value will be visible to managed code. *New* attributes are not visible to managed code -- there's really no way they could be, since most managed languages depend on the compile-time definition of a type and could rarely do anything useful with a dynamic attribute. The same holds true for Python sub-classes of managed types, which is the main way that extra (Python-only) attributes would be added: import CLR from CLR.System.Drawing import Point class MyPoint(Point): def __init__(self): self.Z = 0 In this case, managed code cannot see or use MyPoint.Z. It cannot see MyPoint at all, in fact -- an instance of MyPoint passed to a managed method will be seen by managed code as a Point instance. Subclassing is a case where technically we *could* be fancy and generate a managed subclass visible to the managed world if we worked hard enough. So far, I'm not convinced that its worth the work, given that the usefulness would be limited (again, because most managed languages work against compile-time metadata, a Python-generated managed subclass wouldn't really be useful for defining new types unless it could be persisted to an assembly for other managed code to build against). Brian Lloyd [EMAIL PROTECTED] V.P. Engineering 540.361.1716 Zope Corporation http://www.zope.com _________________________________________________ Python.NET mailing list - PythonDotNet@python.org http://mail.python.org/mailman/listinfo/pythondotnet