python中类变量和实例变量__之实例变量

来源:互联网 发布:宣传音频制作软件 编辑:程序博客网 时间:2024/06/07 05:06

1.Python中实例变量

class Test:    def f(self, name):        self.name = name    def f1(self):        print(self.name)
#************************实例变量为实例对象特有数据************************
x1 = Test() #实例化Test类,创建实例对象x1x2 = 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.实例变量为实例对象特有数据
'''


0 0