I have the following class. The behavior for self.value
and self.name
are identical. Only the variable names are different. How can I rewrite this so that I don't have to define two essentially identical property definitions just because I'm working with different variable names? Can I access the variable names in the setter and getter functions and maybe use getattr()
and setattr()
?
I'm using: Jython 2.5.2
class StateMachineState(object):
def __init__(self, value, name):
self.valueHash = None
self.nameHash = None
self.stateHash = None
self.value = value
self.name = name
def __eq__(self, other):
return self.stateHash == other.stateHash if self.__class__ == other.__class__ else False
def __str__(self):
return "value = %s (%s) - name = %s (%s) - (%s)" % (self.value, self.valueHash, self.name, self.nameHash, self.stateHash)
def getValue(self):
return self._value
def setValue(self, value):
try:
str(value)
hash(value)
self.valueHash = hash(str(value) + str(value.__class__))
self._value = value
except:
self.valueHash = None
self._value = None
self.stateHash = hash(str(self.valueHash) + str(self.nameHash))
def getName(self):
return self._name
def setName(self, name):
try:
str(name)
hash(name)
self.nameHash = hash(str(name) + str(name.__class__))
self._name = name
except:
self.nameHash = None
self._name = None
self.stateHash = hash(str(self.valueHash) + str(self.nameHash))
value = property(getValue, setValue)
name = property(getName, setName)
I was able to solve this problem using a wrapper function: