Python中的指针?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (224)

我知道Python没有指针,但是有什么方法可以获得这个结果吗?2相反

>>> a = 1
>>> b = a # modify this line somehow so that b "points to" a
>>> a = 2
>>> b
1

?


举个例子:我想form.data['field']form.field.value总是有相同的价值。这不是完全有必要的,但我觉得那会很好。

提问于
用户回答回答于
class Form(object):
   ...
   def __getattr__(self, name):
       return self.data[name]

class Form(object):
   ...
   @property
   def data(self):
       return self.__dict__

class KouWrap(object):
   def __init__(self, value):
       self.value = value

class Form(object):
   ...
   def __getattr__(self, name):
       return KouWrap(self.data[name])

form.field.value = 23也应该设置form.data,然后包装必须变得更复杂,而不是所有的无用:

class MciWrap(object):
   def __init__(self, data, k):
       self._data = data
       self._k = k
   @property
   def value(self):
       return self._data[self._k]
   @value.setter
   def value(self, v)
       self._data[self._k] = v

class Form(object):
   ...
   def __getattr__(self, name):
       return MciWrap(self.data, name)

在Python中,后一个例子大致接近于你似乎想要的“指针”的含义,但关键的是要理解这种微妙之处只能用在索引和/或装饰名称绝不可能跟你最初要求的一样!

用户回答回答于

你不可能只改变这一行。你可以:

a = [1]
b = a
a[0] = 2
b[0]

这将创建一个列表,将对a的引用分配给a,然后b也使用该引用将第一个元素设置为2,然后使用b引用变量进行访问。

扫码关注云+社区

领取腾讯云代金券