我是 Python 属性的新手。我想使用它们来创建一个“设置器”,以确保在设置相应属性时属性值在其允许的范围内。
我发现的典型用法示例如下所示:
class C(object):
def __init__(self):
self.__x = None
def getx(self):
print "+++ getx()"
return self.__x
def setx(self, v):
if (v > 0):
print "+++ setx({0})".format(v)
self.__x = v
def delx(self):
print "+++ delx()"
del self.__x
x = property(getx, setx, delx, "Me property 'x'.")
在这个简单的示例中,设置器“setx”确保只能将正值分配给属性 self.__x。到目前为止,一切都很好。然而,在查看这段代码时,我开始怀疑是否可以使用类本身的属性。例如,我想知道是否可以有以下构造函数:
def __init__(self):
self.x = None
为了从构造函数中直接调用 setter,以确保将属性 self.__x 设置为有效值。更进一步,我想知道我是否可以在课堂上的其他任何地方做同样的事情(getter 和 setter 本身明显例外)。如果是这样,这是否被认为是良好的编程习惯?如果没有,有什么替代方案?我真的很困惑。
谢谢!