18得票2回答
属性、描述符和__getattribute__的使用场景比较 (注:该标题为提问,不需要回答)

这个问题涉及到在每种使用情况下哪种方法更可取,而不是技术背景。 在Python中,您可以通过属性(property)、描述器(descriptor)或魔术方法(magic methods)控制属性的访问。在每种使用情况下,哪一个是最符合Python风格的?它们似乎都有相同的效果(请参见以下示...

17得票3回答
为什么人们在__get__中将所有者参数默认设置为None?

我经常看到这种情况:def __get__(self, instance, owner=None): 为什么一些人在使用owner参数时会使用默认值None? 甚至在Python文档中都这样做:descr.__get__(self, obj, type=None) --> value

17得票2回答
当使用Python的描述器协议时,如何获取属性名称?

描述符协议运行良好,但我仍然有一个问题需要解决。 我有一个描述符: class Field(object): def __init__(self, type_, name, value=None, required=False): self.type = type_...

15得票1回答
函数描述符是如何工作的?

我在阅读有关Python对象模型的演示文稿时(链接:http://www.aleax.it/Python/nylug05_om.pdf),在其中一张幻灯片(第9页)中,作者声称Python的函数是描述符。他给出的例子与我写的类似:def mul(x, y): return x * y ...

15得票4回答
如何为 Python 属性实现 __iadd__?

我将尝试创建一个Python属性,其中就地添加由不同的方法处理,而检索值、添加另一个值并重新分配则由另一种方法处理。因此,对于对象o上的属性x, o.x += 5 应该与之前的工作方式不同 o.x = o.x + 5 o.x的值最终应该相同,以免混淆人们的期望,但我想使原地添加更有...

15得票1回答
Python描述符的文档字符串

我正在使用描述符来定义一个接口类的寄存器:class Register(object): def __init__(self, address, docstring="instance docstring"): self.address = address ...

14得票3回答
为什么Python中的属性查找是按照这种方式设计的(优先级链)?

我刚刚接触Python中的描述符,并且了解了关于“__get__,__set__,__delete__”的描述符协议的想法,它在包装方法方面确实做得很好。 然而,在协议中,还有其他规则:   数据描述符和非数据描述符在重写与实例字典中的条目相关联时的计算方式上有所不同。如果实例字典具有与...

13得票1回答
Python数据和非数据描述符

根据Python的文档,具有定义了__set__()和__get__()的数据描述符总是会覆盖实例字典中的重新定义。我没有理解这个句子的问题,但有人能否为我澄清为什么需要这样的规则呢?毕竟,如果我想要在实例字典中覆盖属性,我已经需要明确地这样做(inst.__dict__["attr"] = ...

12得票2回答
Eclipse Juno 加载描述文件错误。

我刚把我的Eclipse从Galileo升级到了Juno版本。我创建了一个新的工作区,并导入了一个基于Java Spring MVC的项目。当我打开它时,它开始“加载描述符”,然后出现一个错误消息:“在‘Loading descriptor for mta_pfm’期间发生内部错误”。如果我使...

12得票2回答
简洁的获取描述符对象的方法

在Python 3中class A(object): attr = SomeDescriptor() ... def somewhere(self): # need to check is type of self.attr is SomeDescrip...