Hus*_*ain 1 python oop parameters methods
我刚开始学习python.我编写了一个示例脚本来测试python中的OOP,但是发生了一些非常奇怪的事情.当我调用类方法时,Python使用的参数多于给定的参数.
这是代码:
1. class Bar:
2. num1,num2 = 0,0
3. def __init__(num1,num2):
4. num1,num2 = num1,num2
5. def foo():
6. if num1 > num2:
7. print num1,'is greater than ',num2,'!'
8. elif num1 is num2:
9. print num1,' is equal to ',num2,'!'
10. else:
11. print num1,' is less than ',num2,'!'
12. a,b = 42,84
13. t = Bar(a,b)
14. t.foo
15.
16. t.num1 = t.num1^t.num2
17. t.num2 = t.num2^t.num1
18. t.num1 = t.num1^t.num2
19.
20. t.foo
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息:
python test.py
Traceback (most recent call last):
File "test.py", line 13, in
t = Bar(a,b)
TypeError: init() takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
提前致谢
传递给实例方法的第一个参数是实例本身.通常self在定义函数时调用它:
def __init__(self, num1, num2):
Run Code Online (Sandbox Code Playgroud)
考虑阅读教程.
情侣:
Bar但你称之为bar(a, b).改变它来Bar(a, b)解决这个问题.object).你需要class Bar(object):def __init__(num1, num2):应该是def __init__(self, num1, num2):,同样的def foo().self..所以num1应该是self.num1等^操作是布尔XOR.不确定这是否是你想要的,它经常与电源操作员混淆**.这是你的例子,清理并相应地修复:
class Bar(object):
num1, num2 = 0, 0
def __init__(self, num1, num2):
self.num1, self.num2 = num1, num2
def foo(self):
if self.num1 > self.num2:
print self.num1,'is greater than ',self.num2,'!'
elif self.num1 is self.num2:
print self.num1,' is equal to ',self.num2,'!'
else:
print self.num1,' is less than ',self.num2,'!'
a, b = 42, 84
t = Bar(a, b)
t.foo()
t.num1 = t.num1 ^ t.num2
t.num2 = t.num2 ^ t.num1
t.num1 = t.num1 ^ t.num2
t.foo()
Run Code Online (Sandbox Code Playgroud)
结果如下:
42 is less than 84 !
84 is greater than 42 !
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |