Alex Martelli wrote:
def f(*a): pass class C(object): pass class D(object): pass C.f = D.f
= f

If now we want C.f.im_class to differ from D.f.im_class then we need
f to get copied implicitly when it's assigned to C.f (or, of course,
when C.f is accessed... but THAT might be substantial overhead). OK,
I guess, as long as we don't expect any further attribute setting on
f to affect C.f or D.f (and I don't know of any real use case where
that would be needed).

You'd have to do a copy anyway, because f() is still a module-level callable entity. I also agree with Glyph that im_class should only really be set in the case of methods defined within the class block.


Also, interestingly, removing unbound methods makes another thing possible.

    class A(object):
        def foo(self): pass

    class B(object):
        foo = A.foo

    class C(object):
        pass
    C.foo = A.foo


I'd really like to avoid making copies of functions for the sake of reload() and edit-and-continue functionality. Currently we can track down everything that has a reference to foo, and replace it with newfoo. With copies, this would more difficult.

Thanks,
-Shane
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to