python属性get和set order是什么?

编程入门 行业动态 更新时间:2024-10-18 10:19:49
本文介绍了python属性get和set order是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

Python为我们提供了许多关于实例/类属性的可能性,例如:

Python provides us many possibilities on instance/class attribute, for example:

class A(object): def __init__(self): self.foo = "hello" a = A()

有许多方法可以访问/更改self.foo的值:

There are many ways to access/change the value of self.foo:

  • 直接访问a.foo
  • 内部字典a.__dict__['foo']
  • 获取并设置a.__get__和a.__set__,当然有两种预定义的方法.
  • getattribute a.__getattribute__
  • __getattr__和__setattr__
  • 也许更多.
  • direct access a.foo
  • inner dict a.__dict__['foo']
  • get and set a.__get__ and a.__set__,of course there two are pre-defined methods.
  • getattribute a.__getattribute__
  • __getattr__ and __setattr__
  • maybe more.
  • 在阅读源代码时,我总是迷失了他们的最终访问顺序是什么?当我使用a.foo时,如何知道将实际调用哪个方法/属性?

    While reading source code, I always get lost of what's their ultimate access order? When I use a.foo, how do I know which method/attribute will get called actually?

    推荐答案

    bar = a.foo ...

  • 调用a.__getattribute__('foo')
  • 默认情况下依次查找a.__dict__['foo']
  • 如果在A上定义,
  • 或调用foo的.__get__().
  • invokes a.__getattribute__('foo')
  • which in turn by default looks up a.__dict__['foo']
  • or invokes foo's .__get__() if defined on A.
  • 然后将返回值分配给bar.

    a.foo = bar ...

  • 调用a.__getattribute__('foo')
  • 默认情况下依次查找a.__dict__['foo']
  • 或如果在A上定义,则调用foo的.__set__(bar).
  • invokes a.__getattribute__('foo')
  • which in turn by default looks up a.__dict__['foo']
  • or invokes foo's .__set__(bar) if defined on A.
  • 更多推荐

    python属性get和set order是什么?

    本文发布于:2023-11-29 03:55:34,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1645189.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:属性   python   order   set

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!