Does it make sense to do this:
In [2]: class AB: ...: pass ...: In [3]: a = AB()
In [4]: a Out[4]: <__main__.AB instance at 0x8428bec>
In [5]: class BC: ...: def __init__(self, foo): ...: self.foo = foo
In [6]: b = BC(a)
In [7]: b.foo Out[7]: <__main__.AB instance at 0x8428bec>
Absolutely. This is called composition - one object is made up of others. It's a very powerful way to create higher-level abstractions from component parts.
For example, I have a project that uses a database. The lowest level of access to the database is through a JDBC connection object. I have a generic DbAccess class that builds on the connection to provide easier ways to do queries and updates. I have a CbDao class that builds on a DbAccess to provide application-specific primitives such as saveCourse() and findCourse(). Higher-level classes use a CbDao to do some real work. GUI classes present the results to the user and allow the data to be manipulated. So the layering is
GUI - user interaction Application functionality CbDao - application-specific database access DbAccess - generic database access, easy to use JDBC connection - raw database access, not so easy to use
Kent
_______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
