Saturday, April 20, 2013

__get__ in python

#__get__ in python
import math

class Square(object):
    class Area(object):
        def __get__(self, aBear, clsBear):
            if aBear is None:raise AttributeError
            return aBear.edge_length * aBear.edge_length
           
        def __set__(self, aBear, area):
            if aBear is None:raise AttributeError
            aBear.edge_length = math.sqrt(area)
    area = Area()
   
    def __init__(self,edge_length):
        self.edge_length = edge_length

aSquare = Square(3.0)
print aSquare.area
print Square.__dict__["area"].__get__(aSquare,Square)

aSquare.area = 16.0
print aSquare.edge_length

No comments:

Post a Comment