刚开始学习Python的类写法的时候觉得self很不理解,当你看完这篇文章后就会明白所有的疑问。
神奇的self:
在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。
class是面向对象的设计思想,instance(也即是object,对象)是根据class创建的
一个类(class)应该包含数据和操作数据的方法,通俗来讲就是属性和函数(即调用方法)
类class中为啥用使用self?
在类的代码(函数)中,需要访问当前的实例中的变量和函数,即,访问Instance中的:
对应的变量(property):Instance.ProperyNam,去读取之前的值和写入新的值调用对应函数(function):Instance.function(),即执行对应的动作
-而需要访问实例的变量和调用实例的函数,当然需要对应的实例Instance对象本身
-而Python中就规定好了,函数的第一个参数,就必须是实例对象本身,并且建议,约定俗成,把其名字写为self
-所以,我们需要self(需要用到self)
self代表类的实例,而非类。
实例来说明
执行结果如下
从上面的例子中可以很明显的看出,self代表的是类的实例。而self.__class__则指向类。
理解self,看如下示例:
所谓的self,可以理解为
可以把self当做C++中类的this指针样理解,就是对象身的意思
某个对象调其法时,python解释器会把这个对象作为第个参数传
递给self
注意:
1、__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法的内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身
2、使用了__init__方法,在创建实例的时候就不能传入空的参数了,必须传入与__init__方法匹配的参数,但是self不需要传,python解释器会自己把实例变量传进去