zoukankan      html  css  js  c++  java
  • python学习-68 反射

                        反射

    1.什么是反射?

    反射的概念是有Smith在1982年首次提出的,主要是指程序可以访问、检测和修正它本身状态或行为的一种能力(自省)。

    2.以下四个方法可以实现自省

    hasattr(object,name)

    getattr(object,name,default=None)

    setattr(x,y,v)

    delattr(x,y)

    class Car:
        feture = 'big'
    
        def __init__(self,name,color):
            self.name = name
            self.color = color
        def get_car(self):
            print('this car is %s' %self.name)
        def color_car(self):
            print('this car is %s ' % self.color)
    
    c1 = Car('benchi','red')
    
    print(hasattr(c1,'name'))       # 查看是否能调用name这个属性
    print(getattr(c1,'name'))       # 查看调用name后的值
    
    
    setattr(c1,'size','big')        # 修改
    print(c1.__dict__)
    
    
    del c1.size                 # 删除
    print(c1.__dict__)

    运行结果:

    True
    benchi
    {'name': 'benchi', 'color': 'red', 'size': 'big'}
    {'name': 'benchi', 'color': 'red'}
    
    Process finished with exit code 0

    3.导入动态模块名称

    第一种导入方法:

    a = __import__('字符串')      

    print(a)

    例如m1文件夹下的b中的test模块

    a = __import__('m1.b')    # 只能定位到m1   .  可以print(a)试一下

    a.b.test()

    第二种导入方法:

    import importlib

    a = importlib.import_module('m1.b')       # 直接定位到b   。可以print(a)试一下

    m.test

    4.补充封装私有

    如果导入模块时,假如test前面有_代表私有,隐藏属性。导入时也需要加上_,不然会报错无法访问。

  • 相关阅读:
    2020-08-20
    2020-08-19
    2020-08-14
    2020-08-13
    使用numpy实现机器学习模型
    分治法学习
    2020-08-09
    2020-08-02
    四月是你的谎言下载
    新博客
  • 原文地址:https://www.cnblogs.com/liujinjing521/p/11799977.html
Copyright © 2011-2022 走看看