開始使用免費開始

從零開始撰寫一個類別

你是一名 Python 開發者,正在撰寫一個視覺化套件。對於視覺化中的任何元素,你需要能夠得知該元素的位置、它與其他元素的距離,並且能輕鬆地做水平或垂直翻轉。

任何視覺化中最基本的元素就是單一點。在這個練習中,你將從零開始為平面上的一個點撰寫類別。

本練習屬於課程

Python 物件導向程式設計

檢視課程

練習說明

定義類別 Point,其具備:

  • 兩個屬性 xy —— 代表平面上該點的座標;
  • 一個建構子,接受兩個引數 xy,用來初始化對應的屬性。這兩個引數的預設值應為 0.0
  • 方法 distance_to_origin(),它會回傳此點到原點的距離。公式為 $\sqrt{x^2 + y^2}$。
  • 方法 reflect(),用於將此點相對於 x 軸或 y 軸做鏡射反射:
    • 接受一個引數 axis
    • axis="x",就把 y(不是打錯字!)設為 y 的負值,
    • axis="y",就把 x 設為 x 的負值,
    • axis 是其他值,則印出錯誤訊息。 Reflection of a point with respect to y and x axes

注意:你可以選擇使用 numpymath 套件中的 sqrt() 函式,但不論選哪一個套件,在開始定義類別之前都要先匯入它!


要檢查你的程式是否正確,應該能夠順利執行以下程式碼且不出錯:

pt = Point(x=3.0)
pt.reflect("y")
print((pt.x, pt.y))
pt.y = 4.0
print(pt.distance_to_origin())

並得到以下輸出:

(-3.0,0.0)
5.0

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Write the class Point as outlined in the instructions
編輯並執行程式碼