someone else has answered this, but an extra trick that is sometimes
useful is that while there is no forward referencing you can often exploit
late binding and evaluation order.

your example will not work because code at the class level is evaluated
when the module is loaded.  but code at the method level is only evaluated
when called, so

class A:
  def __init__(self):
    self.someType = B

class B:
  anotherType = A

will work.

andrew



Kooks are people too wrote:
> If I try this:
>
> class  A:
>     someType = B
>
> class B:
>     anotherType = A
>
> I get:
> <type 'exceptions.NameError'>: name 'B' is not defined
>       args = ("name 'B' is not defined",)
>       message = "name 'B' is not defined"
>
> Presumably because I'm instantiating an instance of a type object (B)
> that doesn't exist yet.
>
> Is there any way to do this?
>
> Why I'd want to do this actually has to do with Google's datastore
> api.  I'm doing something similar to this:
>
> from google.appengine.ext import db
>
> class  A:
>     aB = db.ReferenceType(B)
>
> class B:
>     anA = db.ReferenceType(A)
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to