学习Python时对self不是太理解,参考一些资料做一下记录
class Person():
def SetName(self,name):
self.name = name
self.inputname = name
input1 = name
def GetName(self):
return self.name
def Greet(self):
print('hello world! I'm %s'.%self.name)
在这里,我们对比下,self.inputname变量和input1变量,都赋值为name,有什么区别呢?
首先,self改变了变量的作用域,不加self的变量是局部变量,作用域是当前函数;加了self的变量是实例变量,作用域是当前实例。也就是说,我们在外部将Person实例化时,可以调用它的inputname变量,因为这个变量为实例变量,作用域为整个实例,但是不可以调用input1变量,因为这个是局部变量,作用域 仅为当前函数,只能在SetNanme中使用。
self指当前实例本身
如,我们实例化 Lemon = Person(),我们得到Person()类的一个实例,那就是Lemon。当我们要调用Lemon的Setname和GetName方法时,Lemon会自动将自己作为第一个参数传进来,所以我们形象的称为self。
如果我们调用Lemon.input1则会报exception