我有以下课程。self.value
和的行为self.name
是相同的。只有变量名不同。我怎样才能重写它,这样我就不必仅仅因为我使用不同的变量名而定义两个本质上相同的属性定义?我可以访问 setter 和 getter 函数中的变量名,并且可以使用getattr()
andsetattr()
吗?
我正在使用: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)