jjzjj

Descriptor

全部标签

python - 在 Python 中,为什么属性优先于实例属性?

Thisarticle描述了Python在执行o.a时如何查找对象的属性。优先顺序很有趣-它寻找:作为数据描述符的类属性(最常见的是属性)实例属性任何其他类属性我们可以使用下面的代码来确认这一点,该代码创建了一个对象o,它具有一个实例属性a,它的类包含一个同名的属性:classC:def__init__(self):self.__dict__['a']=1@propertydefa(self):return2o=C()print(o.a)#Prints2为什么Python使用这种优先顺序而不是“原始”顺序(实例属性优先于所有类属性)?Python的优先顺序有一个明显的缺点:它使属性查找

python - 如何在 python 中使用 opencv 模块可视化描述符匹配

我正在尝试将opencv与python结合使用。我在opencv2.4的C++版本中编写了描述符(SIFT、SURF或ORB)匹配代码。我想用python将这段代码转换为opencv。我找到了一些关于如何在C++中使用opencv函数的文档,但是在python中的许多opencv函数我找不到如何使用它们。这是我的python代码,我目前的问题是我不知道如何在python中使用opencvc++的“drawMatches”。我找到了cv2.DRAW_MATCHES_FLAGS_DEFAULT但我不知道如何使用它。这是我使用ORB描述符进行匹配的python代码:im1=cv2.imrea

python - 使用带槽的 Python 描述符

我希望能够在具有槽优化的类中使用python描述符:classC(object):__slots__=['a']a=MyDescriptor('a')def__init__(self,val):self.a=val我遇到的问题是如何实现描述符类,以便能够将值存储在调用描述符对象的类实例中。通常的解决方案如下所示,但不会起作用,因为在C类中调用“slots”时不再定义“dict”:classMyDescriptor(object):__slots__=['name']def__init__(self,name_):self.name=name_def__get__(self,instan

python - 在某个短语后切割字符串?

我有一批字符串需要删减。它们基本上是一个描述符,后面跟着代码。我只想保留描述符。'adescriptordps23fd''another23fd''andanotherfd''andonewithoutacode'上面的代码是dps、23和fd。它们可以以任何顺序出现,彼此无关并且可能根本不存在(如最后一种情况)。代码列表是固定的(或者至少可以预测),因此假设代码从未在合法描述符中使用,我如何在代码的第一个实例之后剥离所有内容。我正在使用Python。 最佳答案 简短的回答,正如@THC4K在评论中指出的那样:string.spli

python数据和非数据描述符

根据Python'sdocumentation,Datadescriptorswith__set__()and__get__()definedalwaysoverridearedefinitioninaninstancedictionary.我对这句话的理解没问题,但是有人能帮我解释一下为什么会有这样的规则吗?毕竟,如果我想覆盖实例字典中的属性,我已经需要明确地(inst.__dict__["attr"]=val),因为天真的inst.attr=val会调用描述符的__set__方法,这(通常)不会覆盖实例字典中的属性。编辑:澄清一下,我明白发生了什么,我的问题是为什么要制定这样的规则

python - Python 中的静态方法和实例方法

这个问题在这里已经有了答案:Canamethodbeusedaseitherastaticmethodorinstancemethod?(4个答案)关闭9年前。我可以将Python方法同时定义为静态方法和实例方法吗?像这样的东西:classC(object):@staticmethoddefa(self,arg1):ifself:blahblah这样我就可以同时调用它:C.a(arg1)C().a(arg1)目的是能够运行两组逻辑。如果作为实例方法访问,它将使用实例变量并做一些事情。如果作为静态方法访问,则不需要。

Python 描述符与属性

这个问题在这里已经有了答案:WhenandwhymightIassignaninstanceofadescriptorclasstoaclassattributeinPythonratherthanuseaproperty?(3个答案)关闭4个月前。我对何时使用属性与描述符感到困惑。我读到属性是一个专门的描述符。有人可以发布这是如何工作的吗?

python - 为什么Python中的属性查找是这样设计的(优先链)?

我刚刚遇到了Python中的描述符,我对“__get__、__set__、__delete__”上的描述符协议(protocol)有了想法,它在包装方法方面确实做得很好。然而,在theprotocol,还有其他规则:Dataandnon-datadescriptorsdifferinhowoverridesarecalculatedwithrespecttoentriesinaninstance’sdictionary.Ifaninstance’sdictionaryhasanentrywiththesamenameasadatadescriptor,thedatadescriptor

python - __slots__ 在 Python 中是如何实现的?

怎么样__slots__用Python实现?这是否暴露在Cinterface中??如何通过PyTypeObject在C中定义Python类时获得__slots__行为?? 最佳答案 当创建Python类时,它们默认有一个__dict__并且您可以在它们上设置任何属性。插槽的要点是不创建__dict__以节省空间。在C接口(interface)中,它是另一种方式,扩展类默认没有__dict__,您需要明确地添加一个并添加getattr/setattr支持来处理它(虽然幸运的是已经有用于此的方法,PyObject_GenericGetA

python - 什么时候以及为什么我可以将描述符类的实例分配给 Python 中的类属性而不是使用属性?

我知道属性是一个描述符,但是有没有具体的例子说明何时使用描述符类可能更有利,pythonic,或者比使用@property提供一些好处在方法函数上? 最佳答案 更好的封装和可重用性:描述符类可以在实例化时设置自定义属性。有时以这种方式限制数据是有用的,而不必担心它被设置或覆盖在描述符的所有者身上。 关于python-什么时候以及为什么我可以将描述符类的实例分配给Python中的类属性而不是使用属性?,我们在StackOverflow上找到一个类似的问题: ht