text: # -*- coding: utf-8 -*-
  '''
  class Handler:
      def callback(self, prefix, name, *args):
          method = getattr(self, prefix + name, None)
          if callable(method):
              return method(*args)
  
      def start(self, name):
          self.callback('start_', name)
  
      def end(self, name):
          self.callback('end_', name)
  
      def sub(self, name):
          def substitution(match):
              result = self.callback('sub_', name, match)
              if result is None:
                  result = match.group(0)
              return result
          return substitution
  
  
  class HTMLRenderer(Handler):
      def start_document(self):
          print '<html><head><title>...</title></head><body>'
  
      def end_document(self):
          print '</body></html>'
  
      def start_paragraph(self):
          print '<p>'
  
      def end_paragraph(self):
          print '</p>'
  
      def start_heading(self):
          print '<h2>'
  
      def end_heading(self):
          print '</h2>'
  
      def start_list(self):
          print '<ul>'
  
      def end_list(self):
          print '</ul>'
  
      def start_listitem(self):
          print '<li>'
  
      def end_listitem(self):
          print '</li>'
  
      def start_title(self):
          print '<h1>'
  
      def end_title(self):
          print '</h1>'
  
      def sub_emphasis(self, match):
          return '<em>%s</em>' % match.group(1)
  
      def sub_url(self, match):
          return '<a href = "%s">%s</a>' % (match.group(1), match.group(1))
  
      def sub_mail(self, match):
          return '<a herf = "mailto:%s">%s</a>' % (match.group(1), match.group(1))
  
      def feed(self, data):
          print data
  '''
  
  # getattr  setattr
  class Rectangle:
      def __init__(self):
          self.width = 0
          self.height = 0
  
      def __setattr__(self, name, value):
          if name == 'size':
              self.width, self.height = value
          else:
              self.__dict__[name] = value
  
      def __getattr__(self, name):
          if name == 'size':
              return self.width, self.height
          else:
              raise AttributeError
  
  r = Rectangle()
  r.width = 10
  r.height = 5
  print r.size
  r.size = (150, 100)
  print r.width