子函数和类参数

子函数共享主函数参数

  • 子函数可以复用主函数参数,但不可以修改
  • 子函数不可以直接使用另一个子函数参数
def mainfunc(folder, kk):
    tmpvalue=2
    tmpvalueList = ["3"]

    def subfunc():
        print(tmpvalue)
        yu = 1
        _print_kk(yu)
        print(tmpvalue)
        print(tmpvalueList)
        tmpvalueList[0]=("4")
        print(tmpvalueList)

    def _print_kk(yu):
        print(yu, "**")
    subfunc()


mainfunc(1, 2)

__getattr__函数

  • 作用:首先通过__getattribute__进行属性查找( 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)),如果失败,且没有__getattr__函数,则会报错,如果存在这个函数,则采用它进行兜底查找属性
  • 应用:访问属性一样访问dict中的键值对:
class ObjectDict(dict):
    def __init__(self, *args, **kwargs):
        super(ObjectDict, self).__init__(*args, **kwargs)

    def __getattr__(self, name):
        value =  self[name]
        if isinstance(value, dict):
            value = ObjectDict(value)
        return value

if __name__ == '__main__':
    od = ObjectDict(asf={'a': 1}, d=True)
    print (od.asf, od.asf.a)     # {'a': 1} 1
    print (od.d)                 # True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值