Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 盖特还是塞特?_Python_Python 3.x - Fatal编程技术网

Python 盖特还是塞特?

Python 盖特还是塞特?,python,python-3.x,Python,Python 3.x,目前我对getter和setter的概念有点困惑,这些方法被认为是什么?getter或setter或其他什么?这里只有getter和实例方法。没有任何内容正在更新self.?=在构造函数之外 这就是说,如果您只是在执行返回self.?,那么就没有必要了,因为您可以直接访问复杂的\u num\u实例。?而无需任何函数调用。上面代码中显示的方法将是“getter”,因为它们一旦运行就会“获取”某种值。注意它们是如何返回的 即: number=complexnum.real() “real”方法将返回

目前我对getter和setter的概念有点困惑,这些方法被认为是什么?getter或setter或其他什么?

这里只有getter和实例方法。没有任何内容正在更新
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