gpt4 book ai didi

python - 在这个Python类中,如何将值赋给 "other"变量?

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:21 24 4
gpt4 key购买 nike

我正在学习 Python Edx 类(class),下面是介绍 OOP 时给出的示例之一。这是一个基本问题,很多人都会否决它,但在继续之前我需要理解这一点。

我已经在 Reddit 上搜索过,也在 Edx 论坛上问过这个问题,但仍然不明白。我也在这个网站上搜索了这个特定的编码示例。

Reddit:https://www.reddit.com/r/learnpython/comments/a54y04/explanation_needed_on_a_simple_class_creation/

class Coordinate(object):
def __init__(self, x, y):
self.x = x
self.y = y

def distance(self, other):
x_diff_sq = (self.x-other.x)**2
y_diff_sq = (self.y-other.y)**2
return (x_diff_sq + y_diff_sq)**0.5

point1 = Coordinate(1,2)
point2 = Coordinate(3,4)

print(point1.distance(point2))

我想了解的是“other.x”值是如何由程序确定的?因为我没有为 other.x 和 other.y 赋值。

对于 self.x 和 self.y,发生了显式赋值,但对于“other.x”和“other.y”没有这样的赋值。程序如何将“3”分配给“other.x”,将“4”分配给“other.y”?

最佳答案

other 只是方法distance 所采用的参数。隐含地期望该参数具有 xy 属性。 distance 方法不关心它们是否确实存在或是否已分配。

How does the program assign "3" to "other.x" and "4" to "other.y"?

同样,如前所述,other 只是函数参数的名称。让我们看看调用该函数的唯一位置:

print(point1.distance(point2))

这被解释为 self.distance(other),因此我们可以得出结论,在这种特殊情况下,other 是对象 point2 .

现在,让我们返回几行来查找 point2 的任何引用。这是:

point2 = Coordinate(3,4)

在执行Cooperative(3,4)时,我们调用该类的__init__方法。因此,在该方法中,我们将 x 分配给 3,将 y 分配给 4

所以你是对的,other.xother.y没有显式赋值,但other并不是真正的对象但一个论点。因此,您必须了解特定函数调用对应的对象,以及跟踪它被分配的位置。

<小时/>

不要让参数名称让您感到困惑!

For self.x and self.y, there is an explicit assignment happening

这也不完全正确。是的,后面几行有一个对 self 的赋值,但这只是两个不同函数参数的相同名称。代码可以这样写,并且仍然可以正常工作:

class Coordinate(object):
def __init__(obj, x, y):
obj.x = x
obj.y = y

def distance(one, two):
x_diff_sq = (one.x-two.x)**2
y_diff_sq = (one.y-two.y)**2
return (x_diff_sq + y_diff_sq)**0.5

在这里,您可能会说没有对 one 进行显式赋值。但这完全取决于每个函数的每次调用以及传递的参数。

关于python - 在这个Python类中,如何将值赋给 "other"变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57411404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com