1. 学ぶ
  2. /
  3. コース
  4. /
  5. Python によるオブジェクト指向プログラミング

Connected

演習

クラスを一から書く

あなたは可視化パッケージを作成する Python 開発者です。可視化内のどの要素についても、その位置、ほかの要素からの距離、そして水平方向・垂直方向の反転を簡単に実装できるようにしたいと考えています。

どんな可視化でも、最も基本的な要素は単一点です。この演習では、平面上の点を表すクラスを一から作成します。

指示

100 XP

Point クラスを次の要件で定義してください:

  • 2 つの属性 x と y — 平面上の点の座標。
  • コンストラクタ — x と y の 2 つの引数を受け取り、対応する属性を初期化します。これらの引数のデフォルト値は 0.0 とします。
  • distance_to_origin() メソッド — 原点からの距離を返します。その式は \(\sqrt{x^2 + y^2}\) です。
  • reflect() メソッド — 点を x 軸または y 軸について反転します。
    • 引数として axis を 1 つ受け取り、
    • axis="x" の場合、y 属性(誤字ではありません!)を y の負の値に設定します。
    • axis="y" の場合、x 属性を x の負の値に設定します。
    • 上記以外の axis の値に対しては、エラーメッセージを出力します。 y 軸および x 軸に関する点の反転

注意: sqrt() 関数は numpy でも math でもどちらのパッケージから使ってもかまいませんが、どちらを選ぶ場合でも、クラス定義を始める前に必ずインポートしてください。


動作確認のため、次のコードがエラーなく実行できるはずです:

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