classQuantity:def__init__(self,storage_name):self.storage_name=storage_namedef__set__(self,instance,value):ifvalue>0:# setattr(instance, self.storage_name, value)instance.__dict__[self.storage_name]=valueelse:raiseValueError('value must be > 0')def__get__(self,instance,owner):returngetattr(instance,self.storage_name)classLineItem:weight1=Quantity('weight')price1=Quantity('price')def__init__(self,description,weight,price):self.description=descriptionself.weight1=weightself.price1=pricedefsubtotal(self):returnself.weight1*self.price1