Python self学习

最开始学习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

直陈陋见,欢迎指教

原文地址:https://www.cnblogs.com/sdnu-zhang/p/8422659.html