Python教程

学习python第十一天 反射、动态加载模块

本文主要是介绍学习python第十一天 反射、动态加载模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

反射,主要指程序可以访问、检测和修改它本身状态或者行为的一种能力(自省)

可以通过字符串的形式来操作对象的属性

class Person:

  def __init__(self,name,age):

    self.name = name

    self.age = age

p = Person("jack",12)

想判断类中是否有某个属性p.name直接调用了没有的话报错,所以这种方法无法判断。需要用字符串形式来操作对象的属性

if hasattr(p,"name2")                   #hasatter方法是反射的一个方法,判断类中是否有这个属性,返回布尔值。第一个参数是实例,第二个参数是加了引号的属性名称

  print("123456")      #如果存在打印123456 ,不存在不打印

共有四个方法:

  hasattr():判断

  getattr():获取

  setattr():赋值

  delattr():删除

class Person:

  def run(self):

    print("running on the road and seeing the pretty girl!")

user_command = input(>>:).strip( )

if hasattr(p,user_command):

  func = getattr(p,user_command)                #如果函数中有输入的函数名,执行的话就需要将函数赋值,要不然无法执行

  func()    #执行

setattr:

class Person:

  def __init__(self,name):

    self.name = name  

p = Person("jack")

setattr(p,"age",12)

print(p.age)               #只存在实例中,类中没有这个属性

添加方法(函数):

def walk(self):      #将需添加的函数按着类中的函数格式写出

  print(slef.name)

setattr(p,"func",walk)    #第二个参数是赋进去的函数名,第三个参数是被赋进的函数名

p.func(p)      #记得调用的时候需要将实例传入才行

类也是个对象,也可以添加

删除delattr:

delattr(p,"age")

 

动态加载模块:即不在最开始import加载模块,用的时候再加载

这个学的就是一个模块加载的方法,简单一行代码

import importlib

importlib.import_moudle("文件名")

这篇关于学习python第十一天 反射、动态加载模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!