[code.view]

[top] / python / PyMOTW / abc / abc_abstractproperty_rw.py

     #!/usr/bin/env python
     # encoding: utf-8
     #
     # Copyright (c) 2009 Doug Hellmann All rights reserved.
     #
     """
     """
     #end_pymotw_header
     
     import abc
     
     class Base(object):
         __metaclass__ = abc.ABCMeta
         
         def value_getter(self):
             return 'Should never see this'
         
         def value_setter(self, newvalue):
             return
     
         value = abc.abstractproperty(value_getter, value_setter)
     
     
     class PartialImplementation(Base):
         
         @abc.abstractproperty
         def value(self):
             return 'Read-only'
     
     
     class Implementation(Base):
         
         _value = 'Default value'
         
         def value_getter(self):
             return self._value
     
         def value_setter(self, newvalue):
             self._value = newvalue
     
         value = property(value_getter, value_setter)
     
     
     try:
         b = Base()
         print 'Base.value:', b.value
     except Exception, err:
         print 'ERROR:', str(err)
     
     try:
         p = PartialImplementation()
         print 'PartialImplementation.value:', p.value
     except Exception, err:
         print 'ERROR:', str(err)
     
     i = Implementation()
     print 'Implementation.value:', i.value
     
     i.value = 'New value'
     print 'Changed value:', i.value
     

[top] / python / PyMOTW / abc / abc_abstractproperty_rw.py

contact | logmethods.com