簡體   English   中英

如何在此Python類中將值分配給“其他”變量?

[英]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正在采用的論點。 隱式地期望該參數具有xy屬性。 它們的真實存在與否與方法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.xother.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM