python 里边 有没有类似C++的 别名 或者 指针 的功能?
从而实现这样的功能。。。。实例化一个a,a=obj()然后把a的一个属性赋值给n,n=a.name然后修改a的属性值,a.name='other'此时n的值也跟着变了。。...
从而实现这样的功能。。。。
实例化一个a,a=obj()
然后把a的一个属性赋值给n,n=a.name
然后修改a的属性值,a.name='other'
此时n的值也跟着变了。。。。。print(n)会看到n='other'了
怎么都想不通啊。。。
等号可能是在类里边重载了的,但是怎么重载呢。。。 展开
实例化一个a,a=obj()
然后把a的一个属性赋值给n,n=a.name
然后修改a的属性值,a.name='other'
此时n的值也跟着变了。。。。。print(n)会看到n='other'了
怎么都想不通啊。。。
等号可能是在类里边重载了的,但是怎么重载呢。。。 展开
3个回答
展开全部
python里面所有的都是对象
a.name也是个字符串对象(的指针)
所以n = a.name是让n指向了这个字符串
而你修改a.name,实际上是让a.name指向了另一字符串,n没有变更指向
python里是没有引用的
不过解决这个问题一般是用一个公用对象(列表)来实现:
class A ():
name = ["hello"]
a = A()
n = a.name
a.name[0] = "other"
print (n[0])
列表是公用的,a.name和n都指向这个列表。只要变更列表里的元素,双方都能获得新数据。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-04-01
展开全部
你上面修改属性的时候进行的是赋值操作,a.name引用到了一个新的对象,给你一个解决的办法,令a.name=[],再令b=a.name,修改时用a.name.append()等列表操作,只要不重新对a.name赋值,b就会跟着一起改变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询