python反射
2020-12-13 15:56
标签:文件中 第一个 没有 web框架 等于 display 提前 重要 web 反射就是把字符串反射成内存对象。 反射,它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法: attr是属性英文的前几个字母,属性指的是类中类变量、实例变量和方法。但是要注意不能是私有的,如果你的变量是以“_”开头,那将无法获取。 这就等于实现了动态加载和执行所需要的模块或方法而不需要全部写入到PY文件中,当然具体需要执行的方法你也要提前实现。典型的使用场景就是web的URL路由。目前所有的web框架的URL路由基本都是这个原理。 python反射 标签:文件中 第一个 没有 web框架 等于 display 提前 重要 web 原文地址:https://www.cnblogs.com/TianLiang-2000/p/11617179.html什么是反射
1 class TestObj(object):
2
3 def __init__(self, name, age):
4 self.name = name
5 self.age = age
6
7 def displayName(self):
8 print("displayName方法执行,打印姓名:", self.name)
9
10 def AAA(self):
11 print("I am AAA.")
12
13 def main():
14 to = TestObj("Tom", 23)
15 # 查看 to 实例里面是否有 name 这个属性
16 if hasattr(to, "name"):
17 print("实例 to 中有 name 属性。")
18 #得到to实例里面的name值
19 print(getattr(to, "name"))
20 else:
21 print("实例 to 中没有 name 属性。")
22
23 if hasattr(to, "AAA"):
24 print("实例 to 中有 AAA 属性,删除AAA属性。")
25 delattr(to, "AAA")
26 else:
27 print("实例 to 中没有 AAA 属性,AAA将会动态装载到实例里面去的。")
28 setattr(to, "AAA", AAA) # 参数:实例、方法名称、具体方法 相当于 to.AAA = AAA 第一个AAA是函数在实例中的名称, 第二个AAA是把哪个函数放进去,两者只是恰好这里名称一样
反射到底有什么用?