class X(object):
@property
def y(self):
try: return x.__y
except AttributeError: return "default value for y"
x = X()
print x.y
On Friday, February 5, 2016 at 11:22:17 AM UTC+1, Andras Niedermayer wrote:
>
> The IPython autoreload extension does something quite similar to what has
> been discussed here (
> https://ipython.org/ipython-doc/3/config/extensions/autoreload.html ).
> There are cases where it's actually very convenient, e.g. if you have
> results from a long-running calculation in an IPython notebook interactive
> session and you notice that you should change one of the classes, but don't
> want to rerun the whole calculation.
>
> Some of this one gets almost for free in Julia with the Autoreload.jl
> package, since methods are outside of types in Julia, so there's no need to
> search for all object of a modified type in memory and add/modify the
> methods like in Python. (Modifying inlined methods is a bit of a problem,
> but one could probably extend Autoreload.jl to inject @noinline into
> modules.)
>
> Adding fields would only be possible in Julia if it were possible to
> overload field access ( https://github.com/JuliaLang/julia/issues/1974 ).
>
> That's essentially the way one does this in Python. You add a property
> getter y to class X, which allows you to access x.y:
>
> class X(object):
>
>
>
>
> On Friday, February 5, 2016 at 8:17:47 AM UTC+1, Tomas Lycken wrote:
>>
>> My main concern is predictability.
>>
>> Imagine that I define a type Foo and start playing around with it -
>> define some functions that work on foot, perhaps one or two types that hold
>> foos, and manipulate a bunch of Foo instances.
>>
>> Then, I redefine the Foo type - say, I add a field. Which of the other
>> things that I have defined are still valid?
>>
>> If I understand the motivation for this feature correctly, it's to make
>> exploratory programming easier. However, I think it would actually make it
>> a lot more difficult - it would basically give you a bazooka so heavy that
>> the only thing you can reasonably aim at is your own foot...
>>
>> //T
>>
>>