转载至:https://blog.csdn.net/jojoy_tester/article/details/54016309
先看两个类的方法:
- >>> class nc():
- def __init__(self):
- self.name ='tester' #name变量加self
- >>> class mc():
- def __init__(self):
- name = 'tesster' #name变量不加self
- >>> nc = nc() #实例化nc()
- >>> nc.name #通过.操作符可以调用该方法的属性name,说明加self后的name是该方法的属性 attribute。
- 'tester'
- >>> mc = mc() #实例化mc()
- >>> mc.name #尝试通过.操作符调用变量name,明显提示错误,说明不加self的变量不是该方法的属性,它是方法的局部变量。
- Traceback (most recent call last):
- File "<pyshell#33>", line 1, in <module>
- mc.name
- AttributeError: 'mc' object has no attribute 'name'
类中的实例方法的变量不加self,也就是xxx,这个是方法的局部变量,不能被调用,只能在该方法内部使用!
在类中,self只能在方法中使用表示该方法的实例属性,也就是每个实例可以设置不同的值而不会相互影响;在方法下不使用self表示是该方法的局部变量,只能在该方法内使用。
self.xxx是全局的,xxx是局部的对于该方法有效
个人收获:区分出类中实例方法中属性和实例方法中的局部变量的差异