检测对象/类是否有指定的成员
语法:hasattr(类/对象,“成员”)
class Man():
pass
class Woman():
pass
class Son(Man,Woman):
def hobby(self):
print("打篮球,玩电脑,游泳")
def eat(self):
print("羊肉串,大腰子,烤鱼")
obj=Son()
res=hasattr(Son,"hobby")
print(res)
获取对象/类成员中的值
class Man():
pass
class Woman():
pass
class Son(Man,Woman):
def hobby(self):
print("打篮球,玩电脑,游泳")
def eat(self):
print("羊肉串,大腰子,烤鱼")
obj=Son()
#通过类反射出来的方法是一个绑定方法
func1=getattr(Son,"hobby")
func1(1)
#通过对象反射出来的方法是一个普通方法
func2=getattr(obj,"eat")
func2()
#反射成员不存在时,可以设置一个默认值防止报错
res=getattr(obj,"drink","该成员不存在")
print(res)
综合案例:
获取当前文件中的自定义成员:
import sys
def func1():
print("我是func1函数")
def func2():
print("我是func2函数")
def func3():
print("我是func3函数")
while True:
selfmodules=sys.modules["__main__"]
message=input("请输入你要反射的方法:")
if hasattr(selfmodules,message):
func=getattr(selfmodules,message)
func()
else:
print("方法不存在")
设置对象/类成员的值
class Man():
pass
class Woman():
pass
class Son(Man,Woman):
def hobby(self):
print("打篮球,玩电脑,游泳")
def eat(self):
print("羊肉串,大腰子,烤鱼")
obj=Son()
setattr(obj,"eye","黑色")
print(obj.eye)
删除对象/类成员的值
class Man():
pass
class Woman():
pass
class Son(Man,Woman):
def hobby(self):
print("打篮球,玩电脑,游泳")
def eat(self):
print("羊肉串,大腰子,烤鱼")
obj=Son()
setattr(obj,"eye","黑色")
delattr(obj,"eye")
print(obj.eye)
如上,成功删除成员值