# 首先定义一个Person类 # person_class.py class Person: def __init__(self,name,age): self.name = name self.age = age def showPerson(self): print("name:{}\nage:{}".format(self.name,self.age)) if __name__ == "__main__": person = Person("Alex",18) person.showPerson()
结果:
name:Alex age:18
所谓的动态导入是指,可以根据不同的输入导入不同的类,例如,下次可以从 animal_class.py文件中导入 Animal类
import sys
# 定义动态导入类函数
def import_class(import_str):
mod_str,_seq,class_str = import_str.rpartition(".")
print(mod_str) # person_class
print(_seq) # .
print(class_str)# Person
print(sys.path)
# 导入模块
__import__(mod_str)
print(sys.path)
# 利用getattr 函数得到 模块中的类
return getattr(sys.modules[mod_str],class_str)
if __name__ == "__main__":
# 测试
import_str = "person_class.Person"
DynamicClass = import_class(import_str)
# 打印属性
person = DynamicClass("Alex",18) # DynamicClass == Person
person.showPerson()
结果
name:Alex age:18