作者jasonhsu14 (14號星期五的傑森)
看板Python
標題[問題] Class中有關input的疑問
時間Thu Apr 16 11:54:10 2020
各位版友好
不好意思,因為不知道該輸入甚麼關鍵字google
所以特來向版友請教
先附上程式碼
class Human1:
def __init__(self, h=160, w=50):
self.h=h
self.w=w
print(f'H={self.h} cm. W={self.w} kg')
def BMI(self):
return self.w/((self.h/100)**2)
H1=Human1()
print(H1.BMI())
在這例子中可以得到輸出結果如下:
H=160 cm. W=50 kg
19.531249999999996
目前是根據在創建這個類別時所預設的160跟50去計算BMI
那我可以如何去修改這個 def BMI(self)
使得我不僅可以在
print(H1.BMI())得到當初創建類別時的預設或輸入的數字
也可以在
print(H1.BMI(170,80))時,得到不一樣的結果
有想過直接在 def BMI(self, h=160, w=50)這樣去寫
但這樣又等於重複做了跟__init__一樣的事情
所以想詢問有無辦法讓BMI變成一個
不輸入的話就會根據最一開始創建類別的預設(或輸入)數值
但也可以讓BMI自己另外輸入想要的數字
先謝謝版友閱讀我的問題
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.22.64.151 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1587009252.A.E43.html
推 TakiDog: 寫判斷 沒帶args吃self 04/16 12:23
推 ddavid: 參數寫h=None, 04/16 13:15
→ ddavid: 裡面用到h都改寫(self.h if h is None else h)如何呢? 04/16 13:15
謝謝樓上兩位的回答,我目前的寫法也是參數先用None
def BMI(self, h=None, w=None):
if bool(h):
self.h=h
if bool(w):
self.w=w
return self.w/((self.h/100)**2)
是有用這方法達到需求
※ 編輯: jasonhsu14 (211.22.64.151 臺灣), 04/16/2020 13:45:02
→ jasonhsu14: 回文完才發現 2樓有回覆!! 04/16 13:51
推 ddavid: 我也是第一感推文完才想到回文的處理方式XD 04/16 13:54