川A2580 发表于 2021-2-25 14:17:58

课后作业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

suchocolate 发表于 2021-2-25 14:31:04

函数的默认参数,如果函数被调用时没有传入weekend,那么weekend就等于False。

川A2580 发表于 2021-2-25 15:22:54

suchocolate 发表于 2021-2-25 14:31
函数的默认参数,如果函数被调用时没有传入weekend,那么weekend就等于False。

是不是就和后面那个child一样,child=Ticket()实例化对象后再用child = Ture调用init里的默认参数?

Peteryo01223 发表于 2021-2-25 15:25:11

本帖最后由 Peteryo01223 于 2021-2-25 15:32 编辑

回答问题1:这两个默认参数,被人为地、主动定义为 False。
回答问题2:此处的 self,是一个对象,即:object,并不是类本身。之所以写为 self,是通过拼写,传达出,它“代表实例对象本身”的意思。不过,越是这么写,有的时候,初学者看上去,越是容易混淆。至于,对应的 self.exp 和 self.inc,表示了 self 对象,即:实例的变量。它们,与其它的类的变量/全局变量/局部变量,相对应。至于为何用 exp 和 inc 这两个名字,那也是开发人员,想通过命名,顺便做个表达而已,是他个人的选择。self 是关键字。

suchocolate 发表于 2021-2-25 15:36:04

川A2580 发表于 2021-2-25 15:22
是不是就和后面那个child一样,child=Ticket()实例化对象后再用child = Ture调用init里的默认参数?

后面是实例化对象,同时根据关键字传输参数。

川A2580 发表于 2021-2-25 19:04:02

Peteryo01223 发表于 2021-2-25 15:25
回答问题1:这两个默认参数,被人为地、主动定义为 False。
回答问题2:此处的 self,是一个对象,即:obj ...

明白了,很详细谢谢{:10_257:}

川A2580 发表于 2021-2-25 19:05:33

suchocolate 发表于 2021-2-25 15:36
后面是实例化对象,同时根据关键字传输参数。

嗯嗯谢谢
页: [1]
查看完整版本: 课后作业37讲