鱼C论坛

 找回密码
 立即注册
查看: 1683|回复: 6

[已解决]课后作业37讲

[复制链接]
发表于 2021-2-25 14:17:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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
最佳答案
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 是关键字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-25 14:31:04 | 显示全部楼层
函数的默认参数,如果函数被调用时没有传入weekend,那么weekend就等于False。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-25 15:22:54 | 显示全部楼层
suchocolate 发表于 2021-2-25 14:31
函数的默认参数,如果函数被调用时没有传入weekend,那么weekend就等于False。

是不是就和后面那个child一样,child=Ticket()实例化对象后再用child = Ture调用init里的默认参数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 是关键字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

后面是实例化对象,同时根据关键字传输参数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

明白了,很详细谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-25 19:05:33 | 显示全部楼层
suchocolate 发表于 2021-2-25 15:36
后面是实例化对象,同时根据关键字传输参数。

嗯嗯谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 10:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表