KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The majority of my programming experience has been with C++. Inspired by Bjarne Stroustrup's talk here , one of my favorite programming techniques is "type-rich" programming; the development of new robust data-types that will not only reduce the amount of code I have to write by wrapping functionality into the type (for example vector addition, instead of newVec.x = vec1.x + vec2.x; newVec.y = ... etc, we can just use newVec = vec1 + vec2) but will also reveal problems in your code at compile time through the strong type system. A recent project I have undertaken in Python 2.7 requires integer values that have upper and lower bounds. My first instinct is to create a new data type (class) that will have all the same behavior as a normal number in python, but will always be within its (dynamic) boundary values. class BoundInt: def __init__(self, target = 0, low = 0, high = 1): self.lowerLimit = low self.upperLimit = high self._value = target self._balance() def _balance(self): if (self._value > self.upperLimit): self._value = self.upperLimit elif (self._value < self.lowerLimit): self._value = self.lowerLimit self._value = int(round(self._value)) def value(self): self._balance() return self._value def set(self, target): self._value = target self._balance() def __str__(self): return str(self._value) This is a good start, but it requires accessing the meat of these BoundInt types like so x = BoundInt() y = 4 x.set(y) #it would be nicer to do something like x = y print y #prints "4" print x #prints "1" z = 2 + x.value() #again, it would be nicer to do z = 2 + x print z
Tags (comma-separated)
Save Edits
Cancel