|
6鱼币
题目: 定义一个类,实例化该类的时候,自动判断传入了多少个参数,并显示出来.
代码:
- class Number():
- def num(self, args):
- number = 0
- num = []
- for each in args:
- number += 1
- num.append(each)
- print('共传入了 %d 个参数 分别是:' % number, end = '')
- print(num)
- n = Number()
- n.num('I love you!')
复制代码
如果改成这样会报错代码:- class Number():
- def num(self):
- number = 0
- num = []
- for each in self:
- number += 1
- num.append(each)
- print('共传入了 %d 个参数 分别是:' % number, end = '')
- print(num)
- n = Number()
- n.num('I love you!')
复制代码
TypeError: num() takes 1 positional argument but 2 were given self 不就是实例化对象么? 直接从 self 中获取字符 会出错? 麻烦用白话帮我普及一下 self 谢谢
刚看了一遍 书上 self 的章节,什么图纸什么房子的这个倒是看到了,我想问 函数后面括号里,有时候只有一个 self, 有时候self后面带参数,这个什么时候带参数,什么时候只用一个 self 呢?
先说你的程序的问题:
1.函数名与变量名重名(num)
2.变量最好加上self. 这样可以在其它函数中共用。
1.TypeError: num() takes 1 positional argument but 2 were give,
实例化对象时第一个参数是实例化的名字,后面的才是你给的参数。
简单说明一下:
这是修改后的程序
- class Number():
- def cal(self, *args):
- number = 0
- num = []
- for each in args:
- number += 1
- num.append(each)
- print('共传入了 %d 个参数 分别是:' % number, end = '')
- print(num)
复制代码
正常的调用是
- >>> n = Number()
- >>> n.cal('I love you!', 'Me too!')
- 共传入了 2 个参数 分别是:['I love you!', 'Me too!']
复制代码
我们也可以换个方式
>>> n = Number()
- >>> Number.cal(n, 'I love you!', 'Me too!')
- 共传入了 2 个参数 分别是:['I love you!', 'Me too!']
复制代码
这回可以看出self代表n了。
2.的确self就是实例化对象n,但n并不等于是num的参数 'I love you!', 'Me too!',这里是对其参数做解析,使用for语句后面是args
|
最佳答案
查看完整内容
先说你的程序的问题:
1.函数名与变量名重名(num)
2.变量最好加上self. 这样可以在其它函数中共用。
1.TypeError: num() takes 1 positional argument but 2 were give,
实例化对象时第一个参数是实例化的名字,后面的才是你给的参数。
简单说明一下:
这是修改后的程序
正常的调用是
我们也可以换个方式
>>> n = Number()
这回可以看出self代表n了。
2.的确self就是实例化对象n,但n并不等于是num的参数 ...
|