zoukankan      html  css  js  c++  java
  • python的魔法方法

    class F(object):
        def __init__(self):
            self.name = 'A'
        def __getattr__(self, item):
            if item == 'age':
                return 40
            elif item == 'haha':
                return 'good'
            else:
                raise AttributeError('没有这个属性')
        def __getattribute__(self, item):
            print('获取属性,方法', item)
            return object.__getattribute__(self, item)
    f = F()
    print(f.age)
    print(f.haha)
    

      

    获取属性,方法 age   <<<<<print(f.age)时调用getattribute魔法方法
    40                               <<<<<print(f.age)时发现age不是f的属性,则调用getattribute魔法方法
    获取属性,方法 haha 
    good

    此处魔法方法是__getattribute__(self, item)和__getattr__(self, item):

    getattribute (print(ob.name) -- obj.func())当访问对象的属性或者是方法的时候触发

    getattr 拦截运算(obj.xx),对没有定义的属性名和实例,会用属性名作为字符串调用这个方法

  • 相关阅读:
    Linux下对拍(A+B问题)
    洛谷 P1043 数字游戏 区间DP
    6.22 集训--DP复习一
    洛谷 P1220 关路灯 区间DP
    A*算法求K短路模板 POJ 2449
    点分治模板 POJ 1741
    HDU
    棋子游戏 51Nod
    数论习题总结
    CodeForces
  • 原文地址:https://www.cnblogs.com/vigossr/p/10675234.html
Copyright © 2011-2022 走看看