这篇文章给大家分享的是有关Python中映射是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

获取成员: getattr

classFoo:def__init__(self,name,age):self.name=nameself.age=ageobj=Foo('klvchen',18)inp=input('>>>')v=getattr(obj,inp)print(v)

运行结果:

>>>nameklvchen

classFoo:def__init__(self,name,age):self.name=nameself.age=agedefshow(self):return"%s-%s"%(self.name,self.age)obj=Foo('klvchen',18)func=getattr(obj,'show')print(func)res=func()print(res)

运行结果:

<boundmethodFoo.showof<__main__.Fooobjectat0x00000234F6942588>>klvchen-18

检查是否含有成员: hasattr

classFoo:def__init__(self,name,age):self.name=nameself.age=agedefshow(self):return"%s-%s"%(self.name,self.age)obj=Foo('klvchen',18)print(hasattr(obj,'name1'))

运行结果:

False

设置成员: setattr

classFoo:def__init__(self,name,age):self.name=nameself.age=agedefshow(self):return"%s-%s"%(self.name,self.age)obj=Foo('klvchen',18)#print(hasattr(obj,'name1'))setattr(obj,'key','value')print(obj.key)

运行结果:

value

删除成员: delattr

classFoo:def__init__(self,name,age):self.name=nameself.age=agedefshow(self):return"%s-%s"%(self.name,self.age)obj=Foo('klvchen',18)print(obj.name)delattr(obj,'name')print(obj.name)

运行结果:

klvchenAttributeError:'Foo'objecthasnoattribute'name'

通过字符串的形式操作对象中的成员

classFoo:stat='666'def__init__(self,name,age):self.name=nameself.age=ageres=getattr(Foo,'stat')print(res)

运行结果:

666

创建两个文件,s1.py 和 s2.py

s2.py 内容如下:

NAME='klvchen'deffunc():return'func'

s1.py 内容如下:

imports2res1=getattr(s2,'NAME')print(res1)res2=getattr(s2,'func')result=res2()print(result)

运行 s1.py 文件:

klvchenfunc

创建两个文件,s1.py 和 s2.py

s2.py 内容如下:

NAME='klvchen'deffunc():return'cwe'classFoo:def__init__(self):self.name=666

s1.py 内容如下:

imports2res1=getattr(s2,'NAME')print(res1)res2=getattr(s2,'func')result=res2()print(result)cls=getattr(s2,'Foo')print(cls)obj=cls()print(obj)print(obj.name)

运行 s1.py 文件,运行结果:

klvchencwe<class's2.Foo'><s2.Fooobjectat0x000001CFCDBB2438>666

创建两个文件,s1.py 和 s2.py

s2.py 内容如下:

deff1():return'首页'deff2():return'新闻'deff3():return'精华'

s1.py 内容如下:

imports2inp=input('请输入要查看的URL:')ifhasattr(s2,inp):func=getattr(s2,inp)result=func()print(result)else:print('404')

运行 s1.py 文件,运行结果:

请输入要查看的URL:f1首页

感谢各位的阅读!关于Python中映射是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!