最开始学习Python时,用的IDE是IDEL,看的教程是《简明Python教程》,强烈推荐一下,讲得还是很不错的,适合新手学习
http://www.kuqin.com/abyteofpython_cn/index.html
学到面向对象编程时,遇到了一个小问题
class Person:
def add(a,b):
print(a+b)
p = Person()
p.add(1,2)
按照java的思路来看没问题,但是运行时却出现了错误
Traceback (most recent call last):
File "C:/Users/zym09/Desktop/test.py", line 5, in <module>
p.add(1,2)
TypeError: add() takes 2 positional arguments but 3 were given
不是很理解这种错误是什么原因,以为是编辑器出了问题
好吧~换个编辑器,试试eclipse
但是,重点来了,在eclipse中写add方法是直接显示了add(self),代码自动提示出来,
好吧,原来是没认真看,再回头看self的介绍
类的方法与普通函数只有一个特别的区别,他们必须有一个额外的第一个参数的名称,但是在调用这个方法时可以不必为这个参数赋值,这个特别的变量指对象本身(类似于java中的this)
所以正确的代码应该是
class Person:
str="aaa"
def add(self,a,b):
print(a+b)
print(self.str)
p = Person()
p.add(1,2)
这样最终输出是:
3
aaa
直陈陋见,欢迎指教