课后作业37讲
class Ticket():def __init__(self, weekend=False, child=False): #这里设置weekend=False和child=False是什么意思呢?
self.exp = 100 #self.exp和后面的self.inc,在init方法中没有这两个参数是可以通过这种方法自己设置吗?该怎么理解呢?
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 函数的默认参数,如果函数被调用时没有传入weekend,那么weekend就等于False。 suchocolate 发表于 2021-2-25 14:31
函数的默认参数,如果函数被调用时没有传入weekend,那么weekend就等于False。
是不是就和后面那个child一样,child=Ticket()实例化对象后再用child = Ture调用init里的默认参数? 本帖最后由 Peteryo01223 于 2021-2-25 15:32 编辑
回答问题1:这两个默认参数,被人为地、主动定义为 False。
回答问题2:此处的 self,是一个对象,即:object,并不是类本身。之所以写为 self,是通过拼写,传达出,它“代表实例对象本身”的意思。不过,越是这么写,有的时候,初学者看上去,越是容易混淆。至于,对应的 self.exp 和 self.inc,表示了 self 对象,即:实例的变量。它们,与其它的类的变量/全局变量/局部变量,相对应。至于为何用 exp 和 inc 这两个名字,那也是开发人员,想通过命名,顺便做个表达而已,是他个人的选择。self 是关键字。 川A2580 发表于 2021-2-25 15:22
是不是就和后面那个child一样,child=Ticket()实例化对象后再用child = Ture调用init里的默认参数?
后面是实例化对象,同时根据关键字传输参数。 Peteryo01223 发表于 2021-2-25 15:25
回答问题1:这两个默认参数,被人为地、主动定义为 False。
回答问题2:此处的 self,是一个对象,即:obj ...
明白了,很详细谢谢{:10_257:} suchocolate 发表于 2021-2-25 15:36
后面是实例化对象,同时根据关键字传输参数。
嗯嗯谢谢
页:
[1]