• 面向对象~~反射, 判断函数和方法


    python面向对象中的反射:通过字符串的形式操作对象相关的属性。

    一 四种反射:

    1. 对对象的反射

    class A:
        country = '中国'
    
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def func(self):
            print('我好帅')
    
    obj = A('海狗',18)
    print(hasattr(obj,'country'))   # 查
    print(getattr(obj,'country'))   # 找
    getattr(obj,'func')()    
    print(getattr(obj,'sex','找不到')) # 找不到返回返回值
    setattr(obj,'sex','男')     # 添加
    print(obj.__dict__)
    delattr(obj,'name')    #删除
    print(obj.__dict__)
    

    2. 对类的反射

    3. 当前模块的反射

    import sys
    
    def s1():
        print 's1'
        
    this_module = sys.modules[__name__]
    hasattr(this_module, 's1')
    

    4. 其他模块的反射

    二 判断函数和方法

    1. 通过打印函数名的方式区别

    2. 可以借助模块判断

    from types import FunctionType # 函数
    from types import MethodType # 方法
    print(isinstance(func,FunctionType))
    

    3. 函数都是显性传参,方法都是隐性传参.

  • 相关阅读:
    过滤textarea
    vue引用jquery
    vue_ajax插件Axios
    VeeValidate
    mongodb
    WEBGL实现--three.js笔记整理
    My SQLworkbench问题总结
    vue遇到的问题
    MYSQL使用笔记
    vue笔记
  • 原文地址:https://www.cnblogs.com/lav3nder/p/11802049.html
Copyright © 2020-2023  润新知