On Jun 20, 2011, at 11:57 AM, Jeff Hardy wrote:
> On Mon, Jun 20, 2011 at 5:16 AM, Doug Blank <doug.bl...@gmail.com> wrote:
>> Yes, indeed. So, my question is: how to get a "public static property"
>> to be dynamically included with "from x import *"? You can't mark it
>> readonly, right? And it doesn't seem possible without enumerating the
>> static items myself and creating __all__. Perhaps a special DLR
>> method/setting could be added?
>
> Could you open an issue on CodePlex and attach a self-contained
> reproduction (the .cs, and a .py file showing what you expect to
> happen)? It could very well be a bug, or a decision that needs to be
> revisited.
Importing static readonly fields, static methods, and events are supported,
while static properties are not (see
https://github.com/IronLanguages/main/blob/master/Languages/IronPython/IronPython/Runtime/Importer.cs#L798).
A static class's field, methods, and events map nicely onto Python's module
variables and module functions. What would static properties map to on a Python
module? Python new-style classes have properties, but I don't know of a Python
construct on modules that would make to a property.
Help me understand your expectations, when would you expect
get_SomeStaticProperty to be invoked?
// C#
class x {
static int SomeStaticProperty { get { return new System.Random().Next();
} }
}
# property import (doesn't work today)
from x import SomeStaticProperty
print SomeStaticProperty
print SomeStaticProperty
If we chose to map .NET property imports to module variables, then we'd have to
execute the getter when imported, which would break this example (random
numbers). We could do some magic of exposing the PropertyInfo itself as the
variable, making an getter call look like:
SomeStaticProperty()
... and a setter call look like:
SomeStaticProperty(val)
Thoughts?
~Jimmy
_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
http://mail.python.org/mailman/listinfo/ironpython-users