【Python】class类对象的传递

在python中,如果将一个类A的实例对象realA作为形参传递给第二个类B,第二个类B拥有的属性之一classA就是第一个类的实例realA,然后根据第二个类B建立实例对象realB,此实例对象的属性类realB.classA的属性realB.classA.valueA实际上就是实例realA.valueA,属性类realB.classA实际上就是实例类realA。

简单来说,将类对象作为形参进行传递时,传递的只是一个指针,不论是对实例realA进行操作,还是对实例realB.realA进行操作,最终结果是一样的。

如下例所示,realA和realB.classA的内存地址是一样的,说明二者指向同一类实例。

class A():
    def __init__(self):
        self.valueA = 0


realA = A()


class B():
    def __init__(self, realA):
        self.classA = realA


realB = B(realA)

print(realA.valueA)
print(realB.classA.valueA)
print(id(realA))
print(id(realB.classA))

realA.valueA = 19
print(realA.valueA)
print(realB.classA.valueA)
print(id(realA))
print(id(realB.classA))

realB.classA.valueA = 9
print(realA.valueA)
print(realB.classA.valueA)
print(id(realA))
print(id(realB.classA))



# 输出如下
0
0
28023024
28023024
19
19
28023024
28023024
9
9
28023024
28023024

注意,如果为了方便,其实可以将classA直接用realA替换,形式上就会更为统一。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值