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)
总结