zoukankan      html  css  js  c++  java
  • __get__方法和__getattribute__方法的优先级

    # __get__方法和__getattribute__方法的优先级
    class A:
        def __get__(self,instance,owner):
            print('正在进行get操作')
            
    class B: # 这些类属性真的狗
        """
        那么,什么是"属性的查找机制"呢? —— 其实就是,当 一个对象实例名(如叫 'obj')开始 '.' ( 点出某个属性)时,就会触发 __getattribute__()  
    注1:通常是object总类里的__getattribute__,因为继承机制。
    注2:通过类名'.'出 类变量时,不会触发;
           只有通过 实例名'.'出时,才会触发。  而这是绝大数的情况,故说"很底层"。。
    
    又因为每个类都继承了object这一总类,若 你在自定义类中 重写了 __getattribute__ ,
    那 它可能无法获取到正确的属性,所以 通常都要 return object.__getattribute__(self, attr)
        """
        x = A() # 在类中赋值给其他类
        def __getattribute__(self,name): # __getattribute
            print('正在进行getattribute操作')
    
    a = B()
    a.x # 正在进行getattribute操作
    
    class A:
        """
        __get__, __set__, __del__, __set_name__ 这四个是一类的,用在"描述器"时,通常前两个用的更多。
    而描述器的具体写法,可以参考官方文档和Python的Howto系列文章。
    
    __getattribute__ 是一个很底层的,实例对象的"属性查找机制"。(注:这里的属性,包括一般对象的值属性和对象的方法。)
        """
        def __get__(self,instance,owner):
            print('正在进行get操作')
            
    class B:
        x = A()
    
    a = B()
    a.x # 正在进行get操作
    
    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    剑指offer---尾到头打印链表
    剑指offer---链表中环的入口结点
    剑指offer---删除链表中重复的结点2
    剑指offer---删除链表中重复的结点
    6.shap以及selector的使用
    7.进度条(ProgressBar)
    5.toogleButton以及Switch
    4.基础控件
    3.触摸事件
    2.点击事件和页面切换
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15084207.html
Copyright © 2011-2022 走看看