Python中类变量和实例变量的地址问题

类变量地址共存

class Person:
    move = True    # 这是类变量
    def __init__(self , name , age):
        self.name = name  # 这是实例变量
        self.age = age  # 这是实例变量

p1 = Person('张三' , 20)
p2 = Person('李四' , 30)

# 通过id()函数查询move内存地址

print(id(p1.move))   # 输出结果为:1622667424
print(id(p2.move))   # 输出结果为:1622667424

实例变量内存地址不共存

class Dog:
    kind = 'canine'  # class variable shared by all instances
    def __init__(self, name, kind):
        self.name = name  # instance variable unique to each instance
        print(name)
        self.kind = kind # self.kind是一个实例变量

dog1 = Dog('哈士奇', 'dog1')
print(dog1.kind) # dog1(本质上打印的是实例变量)
print('dog1_id_kind =', id(dog1.kind))# 输出结果为:2144372328688

dog2 = Dog('阿拉斯加', 'dog2')
print(dog2.kind) #dog2(本质上打印的是实例变量)
print('dog2_id_kind =', id(dog2.kind)) # 输出结果为:2144375232048

# 这是一个类变量
print('dog_id = ', id(Dog.kind)) # 输出结果为:2144372807216
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值