> 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 - [email protected]
http://mail.python.org/mailman/listinfo/pythondotnet