----- Original Message ----- From: Jim Fulton <jim@digicool.com> To: cpita <cpita@uol.com.ar> Cc: <zope-dev@zope.org> Sent: Monday, March 20, 2000 4:04 PM Subject: Re: [Zope] ExtensionClass
The search order is:
1. Instance dictionary
2. Class dictionary
3. Do depth-first search of base classes from left to right.
Suppose that Bi belongs to E (following the previous names) and is not, for example, Persistent, and that Bj is Persistent (where j > i). The problem of the getattr (I mean in Persistent) invoked only when the attribute being accessed doesn't belong to the instance dictionary or class dictionary is still here, isn't it? Carlos
Situation:
1) Class A subclasses 2+ extension classes E = {E1,...,En} and perhaps another non extension classes C = {C1,...,Cm}. That is, class A(B1,...,Bk): ...., where B1,...,Bk are each in E or in C. 2) a is an instance of A (a = A()) 3) a.foo(bar) is invoked 4) getattr is invoked in the first extension class in the inherited classes list (i.e. the first Bi belonging to E)
Question:
What happens then? I guess that calling Py_FindMethod (inside getattr implementation) will trigger a search in instance and base classes' dictionaries, but what about the other extension base classes and what about the searching order?
OK, let's move this to zope-dev.
I can't find any doc on these, so I'm needing your help.
The search order is:
1. Instance dictionary
2. Class dictionary
3. Do depth-first search of base classes from left to right.
In other words, the search order is the same as for getattr on Python instances, except that some base classes can be in C.
Jim
_________________________________________________________________ UOLMAIL - Todo Argentino tiene derecho a tener su e-mail. http://www.uolmail.com.ar