[Zope] Class - Object relationship
Chris McDonough
chrism@zope.com
Sun, 09 Dec 2001 15:52:40 -0500
On Sun, 9 Dec 2001 11:18:03 +1000
"Tom Cameron" <tom@cameron.to> wrote:
> So I gather from this that it all comes down to the name
> - if I rename the
> product then I stuff things up.
Yes... although there is a facility for aliasing names when
you move them named __module_aliases__. Here's an example
I gave on the maillist a while ago for using
__module_aliases__:
It works by putting a tuple of tuples in your Product's
__init__.py module in a __module_aliases__ attribute at
module scope. For example, PythonScripts have the following
__module_aliases__ attribute.
from Shared.DC import Scripts __module_aliases__ = (
('Products.PythonScripts.Script', Scripts.Script),
('Products.PythonScripts.Bindings', Scripts.Bindings),
('Products.PythonScripts.BindingsUI',
Scripts.BindingsUI),)
.. this maps the module that *used* to be at
Products.PythonScripts.Script to the module that is *now* at
Scripts.Script, etc. This only works with modules and not
with classes or other types.
This is a hack.
> Is there anyway to query what class an object is
> instanced off? And also to
> edit this i.e. in the event that the class may have been
> renamed.
All instances have an attribute __class__ that can be used
to tell what class they are from. Cant edit an instance if
it can't be loaded from the ZODB.