> That's insightful for me thank you.  Actually I've been staring at
> env.py/Environment/get_db_cnx for the past 30 minutes, because the one
> statement that is in it in it is confusing to this python n00b
>
> class Environment
>   def get_db_cnx(self):
>     return DatabaseManager(self).get_connection()
>
> How does that reference to DatabaseManager(self) work?
>
> When I look at trac/db/api.py, I see:
> class DatabaseManager
>   def __init__(self):
>     ...
>
> Why does Environment/get_db_cnx need to send a reference to itself to
> DatabaseManager, and what method in DatabaseManager is answering that
> reference?  If it is __init__ how come it's __init__ doesn't look
> like:
>   def __init__(self, env)
>     ...
>
> Can you help me understand this?

Well, I've come a bit farther on that.  First the code is not:
class DatabaseManager
but
class DatabaseManager(Component)

And what is called is not initially
DatabaseManager.__init__(self)
but
Component.__new__(cls, *args, **kwargs)
where args[0] is expected to exist in the code.

(Thanks to pdb and emacs for helping me get that.  Still not clear
when and how DM.__init__(self) is called, but tomorrow is another
day?)

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Trac 
Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/trac-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to