我在这里阅读了有关stackoverflow的几篇教程,文章和问题,包括python doc,但是他们都在他们的示例中使用了单个实例变量,如果你有更多的话,很难看到python属性如何工作而不是一个。
起初我认为属性函数是为了能够设置或获取任何属性而创建的,所以你只能创建一个get和一个set方法,然后创建任意数量的实例变量来使用它们,但这似乎不是案例(?)
如果我有以下代码(直接来自property()上的官方文档):
class C(object):
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
除了删除方法“delx”之外,还有一个方法“getx”和一个方法“setx”。如果我还需要一些像y和z这样的实例变量,那么我需要编写以下代码:
class C(object):
def __init__(self, x, y, z):
self._x = None
self._y = 2
self._z = 4
def getx(self):
return self._x
def gety(self):
return self._y
def getz(self):
return self._z
def setx(self, value):
self._x = value
def sety(self, value):
self._y = value
def setz(self, value):
self._z = value
def delx(self):
del self._x
def dely(self):
del self._y
def delz(self):
del self._z
x = property(getx, setx, delx, "I'm the 'x' property.")
y = property(gety, sety, dely, "I'm the 'y' property.")
z = property(getz, setz, delz, "I'm the 'z' property.")
上面的代码看起来很像java setter / getters,而在python中使用属性的原因似乎正是为了避免这种情况,所以你打算使用某种类型的og通用getter / setter代替吗?
请不要用大量的-1来打击我,我只是想了解这一点,我已经阅读了相当多的内容,试图避免发布这些人经常会因为人们不是python中的高手而感到恼火。
答案 0 :(得分:0)
你的例子中的getter和setter是没用的,只是跳过它们。您所需要的只是:
class C(object):
def __init__(self, x, y, z):
self.x = None
self.y = 2
self.z = 4
只有在你想要做一些与众不同的事情时才需要吸气剂和二传手。仅使用属性即可获得属性和设置属性。