access.py

  This, along with the following two files, satisfy the second quiz question. 
  This first file gives the decorator: it's been augmented to return the original
  class in optimized mode (–O), so attribute accesses don’t incur a speed hit. 
  Mostly, it just adds the debug-mode test statements and indents the class 
  further to the right, along with a superclass imported from the following file
  to support built-in operations and their operator-overloading methods.

access_builtins.py 

  This module defines a mix-in class that is imported and subclassed by the 
  prior file to add support for built-in operations in wrapped objects.  It uses
  one of the earlier mix-in techniques (access_builtins_mixin_desc.py, the 
  descriptor generator) to add some operator-overloading method redefinitions
  inherited by the wrapper class.  The mix-in used here requires listing such 
  methods in Public decorators if they should be runnable outside the class;
  see earlier for alternatives that do not (but that also do not allow built-ins
  to be made private), and expand this class's methods list as needed.

access-test.py

  Test the access.py here.  Here too the self-test code is split off to a 
  separate file, so the decorator can be imported elsewhere without triggering 
  the tests, and without requiring a __name__ test and indenting.  The same 
  code applied is to the same class decorated with Private and then with Public.

results.txt

  The output of the preceding script.
