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
2014-04-01 · TA获得超过1203个赞
知道小有建树答主
回答量:581
采纳率:0%
帮助的人:415万
展开全部

楼上说的列表让我想起来,你可以利用列表的可变性,就是看起来有点怪:

>>> class foo(object):
def __init__(self):
self.bar = ['Initial']


>>> a = foo()
>>> a.bar[0]
'Initial'
>>> b = a.bar
>>> a.bar[0] = 'other'
>>> b[0]
'other'
silmerusse
2014-04-01 · TA获得超过6640个赞
知道大有可为答主
回答量:2919
采纳率:33%
帮助的人:2102万
展开全部

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就会跟着一起改变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式