python反射详解
2021-07-09 05:04
标签:pytho otf print 输入 报错 not module lan ima 可使用反射的地方: 判断类、对象或者模块中是否有相应的属性或方法。用法:getattr(obj,str,default=None) 判断obj中是否有str属性,有就返回,没有时有传入第三参数就返回第三参数,没有就报错。 设置属性。第三参数为新的属性值 判断时候有某个属性,有就返回True,没有就返回False 删除某个属性 sys.modulses[__name__]就是本文件对象。 python反射详解 标签:pytho otf print 输入 报错 not module lan ima 原文地址:https://www.cnblogs.com/linshuhui/p/9567524.html一、什么是反射
反射就是通过字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动
1、反射类中的变量 : 静态属性,类方法,静态方法
2、反射对象中的变量、对象属性、普通方法
3、 反射模块中的变量
4、反射本文件中的变量getattr(核心)
class A:
name = ‘zs‘
age = 18
print(getattr(A,‘name‘))
print(getattr(A,‘language‘,‘notfound‘))
settattr
class A:
name = ‘zs‘
age = 18
setattr(A,‘name‘,‘ls‘)
setattr(A,‘language‘,‘Chinese‘)
print(getattr(A,‘name‘))
print(getattr(A,‘language‘,‘notfound‘))
hasattr
class A:
name = ‘zs‘
age = 18
if hasattr(A,‘name‘):
print(getattr(A,‘name‘))
delattr
class A:
name = ‘zs‘
age = 18
delattr(A,‘name‘)
print(hasattr(A,‘name‘))
反射本文件
import sys
class A:
def __repr__(self):
return ‘666‘
if hasattr(sys.modules[__name__],‘A‘):
print(getattr(sys.modules[__name__],‘A‘)())
二、使用场景
input
用户输入的如果是a,那么就打印1,如果输入的是b就打印2
文件
从文件中读出的字符串,想转换成变量的名字
网络
将网络传输的字符串转换成变量的名字