我有下面的课。self.value
和self.name
的行为是相同的。只有变量名不同。如何重写它,使我不必仅仅因为使用不同的变量名就定义两个基本相同的属性定义?我是否可以访问setter和getter函数中的变量名,或者使用getattr()
和setattr()
?你知道吗
我用的是:Jython2.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)
我使用包装器函数解决了这个问题:
相关问题 更多 >
编程相关推荐