栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python中的指针?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python中的指针?

我希望

form.data['field']
form.field.value
始终拥有相同的价值

这是可行的,因为它涉及修饰的名称和索引-即与 裸*完全
不同的结构以及您所要询问的内容,对于您的请求来说是完全不可能的。为什么要索取不可能的东西 而这 又与 您实际 想要
的(可能的)东西完全不同?

a``b
*** __

也许您不知道裸名和修饰名有多么大的不同。当您引用裸名时

a
,您将确切地知道该对象
a
在该范围中最后绑定到该对象(如果未在该范围内绑定则为例外),这是Python如此深入和基础的方面,它可以不可能被颠覆。当您引用
修饰的
名称时
x.y
,您正在要求一个对象(该对象所
x
引用的)请提供“
y
属性”-并响应该请求,该对象可以执行完全任意的计算(并且索引非常相似:它还允许作为响应执行任意计算)。

现在,您的“实际需求”示例很神秘,因为在每种情况下都涉及两个级别的索引编制或属性获取,因此可以通过多种方式引入您渴望的精妙之处。

form.field
例如,假设还具有其他哪些属性
value
?如果没有进一步的
.value
计算,可能性将包括:

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

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

的存在

.value
表明采摘第一种形式,加上一种-的无用的包装:

class KouWrap(object):   def __init__(self, value):       self.value = valueclass 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] = vclass Form(object):   ...   def __getattr__(self, name):       return MciWrap(self.data, name)

在Python中,后一个示例大致与您想要的“指针”意义相近-但至关重要的是要了解,这样的微妙只能与 索引 和/或 修饰的名称一起使用
决不能 像您最初要求的那样使用裸名!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410754.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号