[Zope3-checkins] CVS: Zope3/src/zodb/code - class_.py:1.7
Jeremy Hylton
jeremy@zope.com
Tue, 21 Jan 2003 15:15:51 -0500
Update of /cvs-repository/Zope3/src/zodb/code
In directory cvs.zope.org:/tmp/cvs-serv26299
Modified Files:
class_.py
Log Message:
Add an __call__() to the PersistentClassMetaClass to guarantee
that instance's __init__() methods are called.
# type's __call__() uses tp_init directly, so it bypasses our
# __getattribute__() hook. So we must guarantee that a class
# is loaded before it is called.
=== Zope3/src/zodb/code/class_.py 1.6 => 1.7 ===
--- Zope3/src/zodb/code/class_.py:1.6 Tue Dec 31 13:27:49 2002
+++ Zope3/src/zodb/code/class_.py Tue Jan 21 15:15:48 2003
@@ -252,6 +252,13 @@
cls._pc_init = True
return cls
+ def __call__(cls, *args, **kwargs):
+ # type's __call__() uses tp_init directly, so it bypasses our
+ # __getattribute__() hook. So we must guarantee that a class
+ # is loaded before it is called.
+ cls._p_activate()
+ return super(PersistentClassMetaClass, cls).__call__(*args, **kwargs)
+
def __getattribute__(cls, name):
# XXX I'm not sure I understand this code any more.
super_meth = super(PersistentClassMetaClass, cls).__getattribute__