Python反射的方法主要有下面四种:
getattr(),通过名称获取
setattr(),设置对应的key,value
hasattr(),判断有没有对应的属性或者方法
delattr(),删除对应的属性或者方法
class Foo:
def __init__(self,name,age):
self.name = name
self.age = age
def show(self):
return self.name+'----'+str(self.age)
obj = Foo('ALex',19)
# print(obj.__dict__["name"])
v = getattr(obj,"name")
print(v)
v = getattr(obj,'show')
r=v()
print(r)
v = setattr(obj,'k','v')
print(obj.k)
v=hasattr(obj,'k')
print(v)
delattr(obj,'name')
print(obj.name)
反射的应用
下面是08.py
NAME = 'LJJ'
def func():
return 'func'
class Foo:
def __init__(self,name,age):
self.name = name
self.age = age
def f1():
return '首页'
def f2():
return '博客'
def f3():
return '精华'
导入08.py然后进行反射的相关操作
"""
class Foo:
stat = '123'
def __init__(self,name,age):
self.name = name
self.age = age
r = getattr(Foo,'stat')
print(r)
"""
import s08
#
# r1 = s08.NAME
# print(r1)
# r2 = s08.func()
# # print(r2)
# r1 = getattr(s08,'NAME')
# print(r1)
# r2 = getattr(s08,'func')
# print(r2())
# cls = getattr(s08,'Foo')
# print(cls)
# obj = cls('Alx',18)
# print(obj.name)
while True:
inp = input('请输入要访问的url')
if hasattr(s08,inp):
func = getattr(s08,inp)
print(func())
else:
print('404')