看板 Python 關於我們 聯絡資訊
各位版友好 不好意思,因為不知道該輸入甚麼關鍵字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