[問題] Class中有關input的疑問

看板Python作者 (14號星期五的傑森)時間4年前 (2020/04/16 11:54), 4年前編輯推噓3(302)
留言5則, 3人參與, 4年前最新討論串1/2 (看更多)
各位版友好 不好意思,因為不知道該輸入甚麼關鍵字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

04/16 12:23, 4年前 , 1F
寫判斷 沒帶args吃self
04/16 12:23, 1F

04/16 13:15, 4年前 , 2F
參數寫h=None,
04/16 13:15, 2F

04/16 13:15, 4年前 , 3F
裡面用到h都改寫(self.h if h is None else h)如何呢?
04/16 13:15, 3F
謝謝樓上兩位的回答,我目前的寫法也是參數先用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

04/16 13:51, 4年前 , 4F
回文完才發現 2樓有回覆!!
04/16 13:51, 4F

04/16 13:54, 4年前 , 5F
我也是第一感推文完才想到回文的處理方式XD
04/16 13:54, 5F
文章代碼(AID): #1UbzRav3 (Python)
文章代碼(AID): #1UbzRav3 (Python)