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

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.实例变量为实例对象特有数据
'''


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值