我的问题是双重的。首先,我想定义一个类,它有一个方法scale
,该方法的行为取决于分配给它的一个属性的值。下面是我目前对XXX
缺少某些代码的部分进行签名的尝试。
class C(object):
def __init__(self):
self._scaling_method = None
def same(self, u):
return u
def double(self, u):
return u * 2
scale = same
@property
def scaling_method(self):
return self._scaling_method
@scaling_method.setter
def scaling_method(self, value):
if value.lower() == "double":
self._scaling_method = "double"
print "Scaling method set to 'double'."
# XXX method scale should be set to double
elif value.lower() == "same":
self._scaling_method = "same"
print "Scaling method set to 'same'."
# XXX method scale should be set to same
else:
print "Unknown scaling method."
如果c
是一个实例C
,我希望能够做到
c.same(3) # yields 3
c.double(3) # yields 6
c.scale(3) # yields 3 because scale defaults to same
c.scaling_method = "double"
c.scale(3) # yields 6
一旦正确设置,我希望能够scaling_method
使用参数设置属性并scale
在__init__
. 目前,我在第二部分看到的唯一解决方案是在类的核心和部分中定义每个缩放方法__init__
,这看起来很尴尬。
编辑:我刚刚注意到这个答案可能会在这里调整。