Luis N wrote:
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

Reply via email to