← クエスト一覧

クエスト42:@propertyを使おう

スライド 1 / 6
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 42 / 85

クエスト42:@propertyを使おう

発展 +10 XP
🏠
今回の課題
Circle クラスに、半径 r から面積を返す @propertyarea を作り、面積を小数第2位まで表示しよう。
📖 解説を見る
🎩 @property って何?

メソッドに @property を付けると、() を書かずに「属性のように」呼び出せます。中では計算ができます。

✏️ 書き方:
class Item:
    def __init__(self, price):
        self.price = price
    @property
    def with_tax(self):
        return int(self.price * 1.1)

item = Item(1000)
print(item.with_tax)
 → 1100
呼ぶときが item.with_tax() ではなく item.with_tax であることに注目。@property はメソッドの真上の行に書きます。

📋 作るもの:
Circle クラスに area というメソッドを追加し、@property を付ける
・引数は self だけ
・円の面積(円周率 × 半径の2乗)を計算して return する
・半径は self.r、円周率は math.piimport math は書いてあるよ)

💡 どこで使う?

「保存はしていないが、その都度計算して見せたい値」に使います。姓+名から full_name、半径から area、税抜から税込価格など。使う側は普通の属性と同じ感覚でアクセスでき、内部の計算を隠せます。

⚠️ ポイント:
・呼ぶときは c.area() は付けない)
self.r ** 2 が半径の2乗、math.pi が円周率
ヒントを見る
メソッドの真上の行に @property を付けると、() なしで呼べる「属性のようなメソッド」になるよ。中では計算した値を return しよう。2乗は ** 2 で書ける。
期待する出力
78.54
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: Rectangle クラスに width=4, height=6 の @property area を作り、面積を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
24
未挑戦

問題 2: Person クラスに first と last から @property full_name を作り「山田 太郎」と表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
山田 太郎
未挑戦

問題 3: Temperature クラスに celsius を設定し @property fahrenheit で「77.0」と表示しよう!(25℃)

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
77.0
コピーしました!