python中的self含义

原文摘自

class A:
   pass
 
a = A()

a是A的一个实例对象;

执行:
A.foo = lambda x : x + 1
A.foo(1)
输出:
2
---------
然后执行:
a.foo(1)
会直接报错.

上面执行"a.foo(1)"语句时有个报错,说只需要一个参数,但是给了两个参数,这第二个参数是怎么来的,为什么A.foo(1)就不会出错。这里我们可以引出python类中的方法函数,方法函数指的是通过类的实例化对象调用的函数,方法函数的第一个形参表示类的实例化对象,通常写成self。执行a.foo(1)时就相当于执行A.foo(a,1),因为A.foo()中只有一个形参,传入的参数多于需要的参数,所以发生类型错误。--来自原文在文章head可查

改进:::我们在A的定义中重新定义foo:

class A:
   def foo(self,n):
       print(n+1)
a = A()

现在我们在a中调用foo就不会有问题了:

执行:
a.foo(1)

我们也可以试试调用A.foo:

执行:
A.foo(a,1)

总结

python的类中定义函数时的self关键字跟python的方法函数有关,方法函数由类的实例化对象调用,需要把调用它的实例化对象传入方法函数中,self即是表示实例化对象的形参。

原文地址:https://www.cnblogs.com/spider3658/p/13710585.html