[英]How to get access to variable that is assigned in function that is inside other class?
[英]How is value assigned to “other” variable in this Python Class?
我正在學習Python Edx課程,下面介紹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
正在采用的論點。 隱式地期望該參數具有x
和y
屬性。 它們的真實存在與否與方法distance
無關。
程序如何將“ 3”分配給“ other.x”,將“ 4”分配給“ other.y”?
同樣,如前所述, other
僅僅是函數自變量的名稱。 讓我們看一下調用函數的唯一位置:
print(point1.distance(point2))
這被解釋為self.distance(other)
,因此我們可以得出結論,在此特定情況下, other
是對象point2
。
現在,讓我們返回幾行以找到point2
任何引用。 這里是:
point2 = Coordinate(3,4)
在執行Coordinate(3,4)
我們正在調用該類的__init__
方法。 因此,在該方法中,我們將x
分配給3
,將y
分配給4
。
因此,您是對的,沒有對other.x
和other.y
顯式分配,但是other
並不是真正的對象,而是一個參數。 因此,您必須了解用於特定函數調用的對象,以及該對象的分配位置。
不要讓參數名稱使您感到困惑!
對於self.x和self.y,發生了顯式分配
這也不是完全正確的。 是的,在后面幾行中,有一個對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
。 但這完全取決於每個函數的每次調用,傳遞的參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.