关于票价的这个代码的问题
<p>class Ticket():
def __init__(self, weekend=False, child=False):
self.exp = 100
if weekend:
self.inc = 1.2
else:
self.inc = 1
if child:
self.discount = 0.5
else:
self.discount = 1
def calcPrice(self, num):
return self.exp * self.inc * self.discount * num
>>> adult = Ticket()
>>> child = Ticket(child=True)
>>> print("2个成人 + 1个小孩平日票价为:%.2f" % (adult.calcPrice(2) + child.calcPrice(1)))
2个成人 + 1个小孩平日票价为:250.00</p><p>这个代码中有几个问题不太清楚</p><p>1:第15~16行赋值给变量的时候为什么后面Ticket括号里面一个什么都没有,一个要加child=True呢?这两个括号里面的内容分别是什么意思?为什么要这杨赋值啊2.在第二行的代码中用到了__int__这个函数在这里有什么作用呢?3.第二行后面定义变量的时候为什么weekend和child都赋值是false呢
</p>
@Twilight6
1:第15~16行赋值给变量的时候为什么后面Ticket括号里面一个什么都没有,一个要加child=True呢?
你看Ticket 类的 __init__方法设置的默认参数:__init__(self, weekend=False, child=False) 已经设置默认参数了,所以可以不传入参数
而这两个参数是干嘛的呢?是用来判断是否是周末 和是否是小孩的你看 init 下面 if weekend和 if child 就是判断这些条件
所以这里如果调用 adult = Ticket() 什么参数都不传入 那么说明你买的门票既不是儿童票,也不是周末的票
而第二个实例就是把 设置为小孩的意思,所以买的就是小孩的票价
这两个括号里面的内容分别是什么意思?为什么要这杨赋值啊
def __init__(self, weekend=False, child=False):
self.exp = 100
if weekend:
self.inc = 1.2
else:
self.inc = 1
if child:
self.discount = 0.5
else:
self.discount = 1
你把 True 或者 False 代入 加上题意 理解代码,参数就是默认既不是小孩也不是周目的意思, 你重新赋值为 True 就说明周末或者 小孩的条件成立了,就买的是这些专门的票
而且不止可以赋值 True你还可以赋值 任何 bool 类型值为 True 的值表示条件成立
2.在第二行的代码中用到了__int__这个函数在这里有什么作用呢?
__init__ 设置了函数可传入的参数 weekend 和 child如果没有设置,那么这个类就无法传入参数
而且 __init__ 通过传入的参数重新初始化对应的打折折扣
3.第二行后面定义变量的时候为什么weekend和child都赋值是false呢
设置为 False 意思就是买的票 默认既不是小孩也不是周末的意思
Twilight6 发表于 2020-6-16 17:14
你看Ticket 类的 __init__方法设置的默认参数:__init__(self, weekend=False, child=False) 已经设 ...
好的,还有一个问题就是你把15~16行括号后面的参数是在和__init__方法后面的参数比较的,为什么不是和下面的calcprice这个方法后面的参数作比较的呢?他们都是方法还有优先级吗? 波大大12138 发表于 2020-6-17 09:46
好的,还有一个问题就是你把15~16行括号后面的参数是在和__init__方法后面的参数比较的,为什么不是和下 ...
__init__ 方法 函数实例化时候会自动调用,也在你实例化后就成功设置了票价问题
下面那个方法是通过 init 初始化的数值进行计算的,没初始化数值怎么进行计算呢? 是吧~就是这个道理 Twilight6 发表于 2020-6-17 09:48
__init__ 方法 函数实例化时候会自动调用,也在你实例化后就成功设置了票价问题
下面那个方法是通过 ...
什么叫做实例化啊,实例化是什么意思啊,代码中的哪个代码哪里体现着实例化啊 波大大12138 发表于 2020-6-17 09:59
什么叫做实例化啊,实例化是什么意思啊,代码中的哪个代码哪里体现着实例化啊
adult = Ticket()
child = Ticket(child=True)
这两个都是实例化,将类对象 Ticket() 实例化为 adult和 child def calcPrice(self, num):
return self.exp * self.inc * self.discount * num这个不是成人的价格么,怎么还要 *self.discount
页:
[1]