鱼C论坛

 找回密码
 立即注册
查看: 1229|回复: 5

[已解决]请教:0基础学习python 37讲 课后0

[复制链接]
发表于 2018-1-31 13:06:31 | 显示全部楼层 |阅读模式

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

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

x
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


问题:
为什么  def __init__(self, weekend=False, child=False) 这里的weekend和child不需要self
还有 能不能 直接写成  def __init__(self, self.XXX, self.YYY) 后面就不需要再self化
最佳答案
2018-1-31 13:16:35
因为这是需要在类外部传入的变量
另外,在类里面,不需要将self.的变量传递到内部函数中,因为可以直接用
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-31 13:16:35 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +3 鱼币

因为这是需要在类外部传入的变量
另外,在类里面,不需要将self.的变量传递到内部函数中,因为可以直接用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-31 13:39:49 | 显示全部楼层
BngThea 发表于 2018-1-31 13:16
因为这是需要在类外部传入的变量
另外,在类里面,不需要将self.的变量传递到内部函数中,因为可以直接用

了解

那像这种
a = self.b + c
a 也不需要self 吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 13:40:36 | 显示全部楼层
本帖最后由 sky 于 2018-1-31 13:43 编辑

def 是赋值操作 这里定义一个类的方法 规则遵循跟定义函数一样的
参数名要符合标识符规则 不能有点号 必须是非数字开头的包含字母数字下划线的

self只是类的方法默认的第一个参数 也可以写成别的 规范都是self

self代表的是类的实例对象
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 13:44:15 | 显示全部楼层

看这个变量是否需要再类的其他地方使用,一般来说需要就加self,不需要就不加
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-1 16:21:30 | 显示全部楼层
sky 发表于 2018-1-31 13:40
def 是赋值操作 这里定义一个类的方法 规则遵循跟定义函数一样的
参数名要符合标识符规则 不能有点号 必须 ...

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 16:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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