首页 > 编程语言 > 详细

python学习-68 反射

时间:2019-11-05 19:13:58      阅读:73      评论:0      收藏:0      [点我收藏+]

                    反射

 

 

 

 

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前面有_代表私有,隐藏属性。导入时也需要加上_,不然会报错无法访问。

 

python学习-68 反射

原文:https://www.cnblogs.com/liujinjing521/p/11799977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!