Newbie (read: pot. stupid) question on objects/namespaces
Fred Pacquier
fredp at multimania.com.nospam
Tue Aug 31 10:57:21 EDT 1999
stephan at pcrm.win.tue.nl (Stephan Houben) said :
>Let me try to rephrase the question first:
>You want to know if it is possible to find out, given a class or
>instance variable, to get at the class or instance.
Yes, that is a much shorter and more correct formulation !
>Short answer: "no".
Hmm. Somehow I felt that one coming :-)
>Longer answer:
>This is really a tricky problem what "class or instance variable"
>actually means in Python. If you have a class like this:
>class Foo:
> x = 1
>, then Foo.x refers to the number 1, which is an object in Python.
>Many other classes Bar, Baz, and instances of those, might have
>references to the same object 1. So 1 doesn't really have a single
>"owner".
Understood.
>Now, you could have a dedicated object which registers its official
>"owner". Say you do that in this way:
>class MyClass:
> def __init__(self, owner):
> self.owner = owner
>
>You create instances of this object like this:
>class Bar:
> x = MyClass(Bar)
>
>, or, if you want to have the instance, rather than the class, as owner:
>
>class Baz:
> def __init__(self):
> self.x = MyClass(self)
Yes, that is indeed very close to the result I was looking for. I might
even have stumbled upon something similar eventually, without ever
realizing that:
>Note that in *both* cases you create a circular reference which means
>that CPython cannot reclaim the class Bar or the instance of Baz.
Duh. Is this a total "no-no", or what ? If this is only for a handful of
instances that are supposed to persist through the entire program lifetime,
is it okay to explicitely del() them at the end or not ?
Thank you very much anyway for a very clear explanation !
--
YAFAP : http://www.multimania.com/fredp/
More information about the Python-list
mailing list