作者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://webptt.com/cn.aspx?n=bbs/Python/M.1587009252.A.E43.html
1F:推 TakiDog: 写判断 没带args吃self 04/16 12:23
2F:推 ddavid: 参数写h=None, 04/16 13:15
3F:→ 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
4F:→ jasonhsu14: 回文完才发现 2楼有回覆!! 04/16 13:51
5F:推 ddavid: 我也是第一感推文完才想到回文的处理方式XD 04/16 13:54