1.Python中实例变量
class Test:
def f(self, name):
self.name = name
def f1(self):
print(self.name)
#************************实例变量为实例对象特有数据************************
x1 = Test() #实例化Test类,创建实例对象x1
x2 = Test() #实例化Test类,创建实例对象x2
#-------------设置实例属性----------
#方式1
x1.f("张三") #设置实例对象属性
x2.f("李四")
#方式2
x1.name = 11 #设置实例对象属性
x2.name = 22
#======对于上述两种方式命名空间的分析======
'''
上述两种方式从表面看一样,都是self.xx = "oo"设置实例的属性,但是不完全一样
方式1:
在函数内赋值,变量的值均存在于函数局部命名空间,即实例的属性存在于该实例的函数属性的局部命名空间中
因此直接访问此类属性只能在方法内部访问
方式2:
直接设置实例的属性,变量的值存在于该实例的局部命名空间
因此访问直接访问此类属性,通过实例对象直接引用即可访问
'''
'''
问题来了...
如果按照上述分析,实例对象岂不是在不同命名空间中有多个同名属性?
测试如下:
'''
x1.f("王五") #设置实例对象属性
x2.f("赵六")
x1.f1() #王五
x2.f1() #赵六
x1.name = "王八" #设置实例对象属性
x2.name = "赵九"
x1.f1() #王八
x2.f1() #赵九
'''
通过上述测试可以发现
1.实例对象和其方法共享同一命名空间
2.实例变量为实例对象特有数据
'''