python学习笔记__反射

Posted 23147-2lemon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记__反射相关的知识,希望对你有一定的参考价值。

反射 # 通过字符串的形式对对象中的成员进行操作(获取/查找/添加/删除)。

操作的内置函数:

1.获取   getattr(object, name) 

  # 去对象object中获取name的内容

技术分享图片
class Foo:
    def __init__(self, name, age):
        self.name = name
        self.age = age


obj = Foo(Lemon147, 18)
v = getattr(obj, name)
print(v)
>>> Lemon147

add = getattr(obj, add, not find!) #如果对象obj中有属性add则返回self.add的值,否则返回‘not find‘!
print(add)

>>> not find!
getattr

2.查找  hasattr(object, name)

  # 检查对象object中是否有name

技术分享图片
class Foo:
    def __init__(self, name, age):
        self.name = name
        self.age = age


obj = Foo(Lemon147, 18)
setattr(obj, add, 123)
print(getattr(obj, add))
delattr(obj, add)

add = hasattr(obj, add)
print(add)
>>>False
hasattr

3.添加  setattr(object, name,value)

  # 在对象object中设置name的值为value

技术分享图片
class Foo:
    def __init__(self, name, age):
        self.name = name
        self.age = age


obj = Foo(Lemon147, 18)
setattr(obj, add, 123)

add = hasattr(obj, add)

print(add)  
>>> True
print(getattr(obj, add)) 
>>>123
setattr

4.删除  delattr(object, name)

  # 删除对象object中的成员name

技术分享图片
class Foo:
    def __init__(self, name, age):
        self.name = name
        self.age = age


obj = Foo(Lemon147, 18)
setattr(obj, add, 123)
print(getattr(obj, add))

delattr(obj, add)
add = hasattr(obj, add)
print(add)
deaattr

 

注:getattr,hasattr,setattr,delattr对模块的修改都在内存中进行,并不会影响文件中真实内容。

 

应用场景

  根据输入或选择,动态的调用不同的模块或功能。(同字典-dictionary 通过key,查询对应的value类似。)

技术分享图片
def s1():
    return 首页

def s2():
    return 新闻

def s3():
    return 精华
test002
技术分享图片
import test002

foo = True
while foo:
    inp = input(请输入您要查询的内容,输入‘Q’退出:) #输入‘s1’执行‘首页’

    if hasattr(test002, inp):
        v = getattr(test002, inp)
        print(v())
    elif inp == Q:
        break
    else:
        print(输入有误)
test001

 

以上是关于python学习笔记__反射的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记之面对象与错误处理

JAVAWEB学习笔记11_XML&反射

python学习之类的反射(2018.6.18)

Python学习————反射

python学习8_1 面向对象(继承多态封装)以及零散概念(组合,property,绑定方法与非绑定方法,反射,内置函数)

Python 学习之路 - 反射,hashlib