Python 盖特还是塞特?
目前我对getter和setter的概念有点困惑,这些方法被认为是什么?getter或setter或其他什么?这里只有getter和实例方法。没有任何内容正在更新Python 盖特还是塞特?,python,python-3.x,Python,Python 3.x,目前我对getter和setter的概念有点困惑,这些方法被认为是什么?getter或setter或其他什么?这里只有getter和实例方法。没有任何内容正在更新self.?=在构造函数之外 这就是说,如果您只是在执行返回self.?,那么就没有必要了,因为您可以直接访问复杂的\u num\u实例。?而无需任何函数调用。上面代码中显示的方法将是“getter”,因为它们一旦运行就会“获取”某种值。注意它们是如何返回的 即: number=complexnum.real() “real”方法将返回
self.?=代码>在构造函数之外
这就是说,如果您只是在执行返回self.?
,那么就没有必要了,因为您可以直接访问复杂的\u num\u实例。?
而无需任何函数调用。上面代码中显示的方法将是“getter”,因为它们一旦运行就会“获取”某种值。注意它们是如何返回的
即:
number=complexnum.real()
“real”方法将返回self.x并将其存储在“number”变量中。number变量从real方法获得了一个值。一个常用的约定是使用前缀“get”命名这些方法。因此,这种方法将成为“获取真实(自我)”的方法
二传手做的正好相反。setter将“设置”一个值
即:
如果我们想设置self.x的值,你可以有这样一个方法。
complexnum.set_x(3)。这会将x的值设置为3
以下是您使用以下想法重新键入的代码:
class ComplexNum:
def __init__(self, x, y):
self.x = x
self.y = y
def real(self):
return self.x
def imag(self):
return self.y
def get_r(self):
return math.sqrt(self.y*self.y + self.x*self.x)
def sqrt(self):
complexA = cmath.sqrt(complex(self.x, self.y))
A = ComplexT(complexA.real, complexA.imag)
return A
def sub(self, complexNum):
a = complex(self.x,self.y)
b = complex(complexNum.x, complexNum.y)
c = a - b
return ComplexT(c.real, c.imag)
不要用Python编写getter和setter。但是,这些都是getters。同样,不要用Python为complex
编写自己的类。您正在寻找吗?这是否回答了您的问题?严格来说,不仅仅是real
和imag
是“getter”,因为它们只访问字段而不做任何其他事情?其余的只是实例方法。该方法是setter吗?@killderich111是,因为它只返回一些值,不设置任何属性。setter是指当你有类似于self.attribute=…
@Tomerikoo Wait的东西时,那么它就是setter?@killderich111对不起,是一个拼写错误。我是那个意思。“不,这是一个获得者,因为……”。很抱歉
# Code
class ComplexNum:
def __init__(self, x, y):
self.x = x
self.y = y
def get_real(self):
return self.x
def get_imag(self):
return self.y
def get_r(self):
return math.sqrt(self.y*self.y + self.x*self.x)
def get_sqrt(self):
complexA = cmath.sqrt(complex(self.x, self.y))
A = ComplexT(complexA.real, complexA.imag)
return A
# Adding a setter
def set_x(self, value):
self.x = value