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)
我现在对 getter 和 setter 的概念有点困惑,这些方法被认为是什么? getter 或 setter 或其他什么?
答案 0 :(得分:3)
这里只有 getter 和实例方法。在构造函数之外没有更新 self.? = ?
话虽如此,如果你只是在做 return self.?
,那么它真的没有必要,因为你可以直接访问 complex_num_instance.?
而无需任何函数调用
答案 1 :(得分:2)
上面代码中显示的方法将是“getter”,因为它们一旦运行就会“获取”某种值。注意它们都是如何返回一些东西的。
浏览器: number = complexnum.real()
'real' 方法将返回 self.x 并将其存储在 'number' 变量中。 number 变量从 real 方法中获得了一个值。一种常用的约定是使用前缀“get”来命名这些方法。所以这个方法会变成'get_real(self)'
setter 的作用正好相反。 setter 将“设置”一个值。
浏览器: 如果我们想设置 self.x 的值,您可以使用这样的方法。 complexnum.set_x(3)。这会将 x 的值设置为 3。
这是使用这些想法重新键入的代码:
# 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