- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自 Python data model documentation :
object.__get__(self, instance, owner=None)
Called to get the attribute of the owner class (class attribute access) or of an instance of that class (instance attribute access). The optional
owner
argument is the owner class, whileinstance
is the instance that the attribute was accessed through, orNone
when the attribute is accessed through theowner
.This method should return the computed attribute value or raise an
AttributeError
exception.PEP 252 specifies that
__get__()
is callable with one or two arguments. Python’s own built-in descriptors support this specification; however, it is likely that some third-party tools have descriptors that require both arguments. Python’s own__getattribute__()
implementation always passes in both arguments whether they are required or not.
object.__set__(self, instance, value)
Called to set the attribute on an instance
instance
of the owner class to a new value, value.Note, adding
__set__()
or__delete__()
changes the kind of descriptor to a “data descriptor”. See Invoking Descriptors for more details.
object.__delete__(self, instance)
Called to delete the attribute on an instance
instance
of the owner class.
为什么 __get__
需要一个 owner
而 __set__
和 __delete__
没有?
这是否意味着当描述符同时提供__get__
和__set__
时,
我的问题其实是this one的一部分.
最佳答案
owner
主要用于获取类本身的属性,而不是实例。当您检索实例的属性时,owner
参数是多余的,因为它只是 type(instance)
。
__set__
不适用于设置类本身的属性,因此它对 owner
没有用处。
关于python - 为什么 __get__ 拥有所有者而 __set__ 和 __delete__ 没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44937813/
来自 here我知道:每个函数实际上都是 class Function 的对象,并且由于描述符协议(protocol),像 a.b 这样的表达式将被传输到 b.__get__ (a,类型(a))。 但
这个问题在这里已经有了答案: Why does a python descriptor __get__ method accept the owner class as an arg? (4 个回答)
我希望能够在将变量传递给跟踪函数时将其设置为包装器。通过一些代码可能更容易理解。这就是我想做的: variables = [] def track(variable): variables.a
我试图了解 __get__ 描述符在下面的代码中正在做什么。我已经写了关于 __get__ 的所有教程,但仍然无法了解这里发生的事情。 class A: def __init__(self,
这个问题在这里已经有了答案: How work pre-defined descriptors in functions? (1 个回答) 关闭 6 年前。 我想问一下简单函数 __get__ 的目
我正在从链接阅读描述符如何工作的解释:http://users.rcn.com/python/download/Descriptor.htm#properties . 但是,在这里,在 Propert
有这段代码: class A: def __init__(self, x): self.x = x def __get__(self, obj, type=None): pri
我正在尝试使用 __get__ 创建一个思考代理特定类型数据的描述符,以便客户端代码可以方便地使用它(最好用示例显示): class Value(object): def __init__(s
class Foo(): def __init__(self): self.bar_ref = self.bar # Allocation occurs here
__get__ 可以实现哪些使用拥有对象上的 getter 方法无法完成的事情? 我能想到更好的关注点分离,但我想还有更多。 最佳答案 它用于描述符。它们有点像 Python 的 getter/set
我有一个装饰器叫做 Special将函数转换为自身的两个版本:一个可以直接调用并在结果前加上前缀 'regular '和一个可以用 .special 调用的并在结果前加上 'special ' 前缀:
我正在阅读 O Reilley Python Cookbook,我对以下代码有疑问: class Typed: def __init__(self, name, expected_type):
我有一个类: from collections import UserList class ItemList(UserList): data = [] def __init__(sel
我确定这将被标记为重复,但我真的不明白我在看什么。我已经查看了有关描述符的 Python 文档,但我已经用 Python 进行了两周的“编程”,但我真的不知道我在寻找什么! 这是我得到的: >>> c
所以我试图在 Python 中实现类似于 C# 事件的东西作为方法的装饰器: from __future__ import annotations from typing import * impor
使用 __get__ 描述符我想实现类似的目标: class Wrapper: def __init__(self, wrapped_value): self._wrapped
来自 https://docs.python.org/2/howto/descriptor.html : descr.__get__(self, obj, type=None) --> value d
全部, 正如标题所问,是否可以在运行时更改 Descriptor 的 __get__ 方法。我所处的情况是我有一个函数在运行时动态地被装饰和未装饰。我希望此函数的结果可用作属性,类似于 @proper
我从 Effective Python item 31 中得到以下示例: from weakref import WeakKeyDictionary class Grade(object):
我在某处读到过这样一个事实,你可以使用 __set__ 而没有 __get__ 的描述符。 它是如何工作的? 它算作数据描述符吗?是非数据描述符吗? 这是一个代码示例: class Desc:
我是一名优秀的程序员,十分优秀!