Loading......
Nov
23
作者:quke.cn   |   分类:Python

    在python中有个getattr和函数,非常强大,可以用字符串的形式获得一个模块中属性,函数的引用或者叫句柄;但有个小疑问就是无法直接获得当前模块的一个属性或函数,我曾苦苦的找寻了一段时间我以为用self之类的简单的内置的属性或之类的东西来作为自身模块的引用,但不幸的是一直没找到,可能没有这种东西。

    最后解决的方式就是在当前模块中引入自己,用from import方式来引入似乎让人感觉不太正常,为什么要在自身中在引入自己呢?实在没办法就退而求其次,在用到的地方在动态的引入吧。最后的解决方式就是使用__import__('模块路径')来引入自己。代码如下:

  1. #包名:lib.templatetags 
  2. #模块名:tags.py 
  3.  
  4. class temClass(object): 
  5.  __init__(self): 
  6.   pass 
  7.  
  8. def main(): 
  9.  selfMod = __import__('lib.templatetags.tags'
  10.  getattr(selfMod.templatetags.tags, temClass) 

 其中selfMod = __import__('lib.templatetags.tags') 执行完得到是lib的引用,但是如果selfMod = __import__('lib')得到就是包含了更过的引用,这些是我不需要的,不能因此增加服务器的负担。

代码中是获得属性的例子,设置或删除属性的例子同理。

由 quke.cn 在 2008-11-23 11:20:25 做最后一次更新!
内容载入中...
  姓名(必填)
  邮箱(选填)
  主页(选填)
作者:z4none
发布于:2010-01-25 8:07 PM
一样的问题, 找了半天:
sys.modules[__name__]
第 1/1 页 首页 1 尾页
内容载入中...