zoukankan      html  css  js  c++  java
  • 反射2

    反射

    反射是用字符串类型的名字去操作变量。注意eval的区别。

    eval是将支付串的代码进行执行。具有非常大的安全隐患。

    但是反射就非常完美的解决了这个问题,反射没有安全问题。

    反射对象中的属性和方法。

    getattr

    class A:
        def func(self):
            print('套你大象')
    a = A()
    a.name = 'alxe'
    # 反射对象属性
    ret = getattr(a,'name')#通过变量名的字符串形式取到值
    print(ret)

    hasattr

    class A:
        def func(self):
            print('套你大象')
    a = A()
    a.name = 'alxe'
    # 反射对象属性
    ret = hasattr(a,'name')#判断这个变量是否在对象中
    print(ret)

    返回的是bool值。

    还有delattr和setattr。上节已更。

    反射对象的方法

    与反射对象的属性不同的是,当你反射方法时需要进行调用。

    class A:
        def func(self):
            print('套你大象')
    a = A()
    a.name = 'alxe'
    # 反射对象属性
    ret = getattr(a,'func')#判断这个变量是否在对象中
    ret()

    其他三种调用方法是一样的。

    反射类的属性和类的方法。(classmethod  staticmethod)

    class A:
        a = 20
        def func(self):
            print('套你大象')
    print(getattr(A,'a'))

    于此类推,我们可以得出反射类的方法。

  • 相关阅读:
    webpack打包注意事项
    打印内存, 打印16进制
    c++ 字符集转换
    RegSvr32 加载失败,找不到指定的模块
    错误码设计
    mfc 移动绘制的图形
    获取、设置光标
    c++ 函数中定义函数
    python linux 自动补全 tab.py
    3.4.5节 完整神经网络样例程序
  • 原文地址:https://www.cnblogs.com/zly9527/p/11650845.html
Copyright © 2011-2022 走看看