text: import DB
  import DBTables
  True = 1
  False = 0
  
  # Here's how you can use a Proxy class
  # in order to inherit from any Python object
  # like our TTable or TQuery !
  
  class Proxy:
    def __init__(Self, Object):
      Self.__object__ = Object
  
    def __getattr__(Self, Key):
      return getattr(Self.__dict__['__object__'], Key)
  
    def __setattr__(Self, Key, Value):
      if Key == "__object__":
        Self.__dict__[Key] = Value
      elif hasattr(Self.__object__, Key):
        return setattr(Self.__object__, Key, Value)
      else:
        Self.__dict__[Key] = Value
  
    def __len__(Self):
      return len(Self.__object__)
  
    def __getitem__(Self, Item):
      return Self.__object__[Item]
  
  class TMyQuery(Proxy):
    def __init__(Self):
      Proxy.__init__(Self, DBTables.CreateTQuery() )
  
  class TMySubQuery(TMyQuery):
    def First(Self):
      print "First requested on Query"
      Self.__object__.First()
      
  
  # Create and open the table
  T = TMySubQuery()
  T.DatabaseName = "DBDemos"
  T.SQL = [
    "SELECT *",
    "  FROM customer.db"
          ]
  T.Open()
  
  # Display columns
  print "Columns: ", T.FieldNamesAsTuple()
  
  # Test of method override
  T.Last()
  print "RecNo =", T.RecNo
  T.First()
  print "RecNo =", T.RecNo
  
  # For each record of the table
  T.First()
  while not T.EOF:
    # Get all the fields in a list
    A = []
    for i in xrange( T.FieldCount ):
      A.append( T.Fields(i).AsString )
    # Print the current record number and the list
    print "Rec.", T.RecNo, ":",  A
    # Get next record
    T.Next()
  
  # Print some fields by their names
  print T.FieldByName("Company")
  
  # Print the fields as a dictionary
  D = T.FieldsAsDict()
  print D["Company"]
  
  # Iterate our class
  print T
  for i in T:
    print i
  
  print T
  
  # Define new instance vars
  T.Test1 = 3
  print T.Test1, T.DatabaseName
  
  # delete the table
  del T
  
  