鱼C论坛

 找回密码
 立即注册
查看: 2320|回复: 3

[已解决]如何解决该报错

[复制链接]
发表于 2019-12-19 11:20:11 | 显示全部楼层 |阅读模式

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

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

x
class Tickets:
    normal_adult = 100
    weekd_adult = 120
    normal_child = 50
    weekd_child = 60
    def cal(num_adult, num_child, weekend):
        if weekend == 0:
            print('%d 个成人 + %d 个小孩周末票价为:%.2f' % (num_adult, num_child, num_adult * normal_adult + num_child * normal_child))
            
        else:
            print('%d 个成人 + %d 个小孩平日票价为:%.2f' % (num_adult, num_child,num_adult * weekd_adult + num_child * weekd_child))

a = Tickets()
weekend =  0
num_adult = 2
num_child = 1
a.cal(num_adult, num_child, weekend)

####a.cal(num_adult, num_child, weekend)
TypeError: cal() takes 3 positional arguments but 4 were given
最佳答案
2019-12-19 12:42:25
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。

class Tickets:
    normal_adult = 100
    weekd_adult = 120
    normal_child = 50
    weekd_child = 60
    def cal(self, num_adult, num_child, weekend):
        if weekend == 0:
            print('%d 个成人 + %d 个小孩周末票价为:%.2f' % (num_adult, num_child, num_adult * self.normal_adult + num_child * self.normal_child))
            
        else:
            print('%d 个成人 + %d 个小孩平日票价为:%.2f' % (num_adult, num_child,num_adult * weekd_adult + num_child * weekd_child))

a = Tickets()
weekend =  0
num_adult = 2
num_child = 1
a.cal(num_adult, num_child, weekend)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-19 12:42:25 | 显示全部楼层    本楼为最佳答案   
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。

class Tickets:
    normal_adult = 100
    weekd_adult = 120
    normal_child = 50
    weekd_child = 60
    def cal(self, num_adult, num_child, weekend):
        if weekend == 0:
            print('%d 个成人 + %d 个小孩周末票价为:%.2f' % (num_adult, num_child, num_adult * self.normal_adult + num_child * self.normal_child))
            
        else:
            print('%d 个成人 + %d 个小孩平日票价为:%.2f' % (num_adult, num_child,num_adult * weekd_adult + num_child * weekd_child))

a = Tickets()
weekend =  0
num_adult = 2
num_child = 1
a.cal(num_adult, num_child, weekend)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-19 13:11:53 | 显示全部楼层
这样改了还是有个小问题,self.normal_adult  这个没有被参数传递,会出错,对函数还要进行修改才行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-19 17:42:23 | 显示全部楼层
ba21 发表于 2019-12-19 12:42
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参 ...

运行出来了,但是有点不明白为什么a.cal(num_adult, num_child, weekend)不需要加self?加了self反而报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 16:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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