`

python中的import方法与newInstance

阅读更多
python中的__import__方法,在导入位于子包下的模块时,必须有fromlist参数,否则返回的不正确。
__import__也不能导入module下的class,可以自己写一个函数来解决这个问题

def importAny(name):
    try:
        return __import__(name,fromlist=[''])
    except:
        try:
            i = name.rfind('.')
            mod = __import__(name[:i],fromlist=[''])
            return getattr(mod,name[i+1:])
        except:
            raise RuntimeError('No module of: %s found'%(name))


xxx = importAny('my.xxx')
cls = importAny('my.xxx.SomeClass')
#相当于 Class.forName('my.xxx.SomeClass')
obj = cls('xxxx') 
#相当于newInstance(‘xxx')
分享到:
评论
2 楼 jasongreen 2009-04-08  
插件、扩展、需要这么用

settings.py

plugins=('xxx.xxx.XXX','yyy.yyy.YY','zzz.zzz.ZZZ',)
1 楼 bohemia 2009-04-08  
不利于重构.
Class.forName()感觉不到好处;

相关推荐

    python3.6.5参考手册 chm

    What’s New in Python What’s New In Python 3.6 Summary – Release highlights New Features PEP 498: Formatted string literals PEP 526: Syntax for variable annotations PEP 515: Underscores in ...

    workestra-python-sdk:适用于 Python 的 Workestra SDK

    #Create a new instance of the SDK sdk = WorkestraSDK() #Set your Api key sdk.setApiKey('{Your-API-Key}') #or use basic authentication sdk.setBasicAuth('{Email}','{Password}') #list the la

    zenpy:Zendesk API的Python包装器

    该项目的目标是使与Zendesk进行编程交互时,轻松编写干净,快速的Pythonic代码。 包装器尝试将API调用减至最少。 无论在何处有意义,都将缓存对象,并懒惰地评估将触发API调用的对象的属性。 Zenpy支持Python2和...

    Matlab树遍历代码-treacl:通过动态属性在python中创建树和图

    在常规Python中,尽管将第一级属性动态添加到类的实例中(例如“ foo.aa = 1”),但是当尝试多个级别(“ foo.aa.bb.cc = 1”时,它将失败) ”)。 Treacl通过默认情况下启用此功能,默认情况下将使用新的空Treacl...

    Python中单例模式总结

     a、单例模式分为四种:文件,类,基于__new__方法实现单例模式,基于metaclass方式实现  b、类实现如下: class Sigletion(objects): import time def __init__(self): time.sleep(1) @classmethod def ...

    buildcopier:TypeScript库将在线英雄联盟翻译成剪贴板导入

    这是它不再支持的Python等效itemsetcopier的后继版本和升级版本。 buildcopier当前支持的在线构建网站是 , 和 如何使用它 首先,您必须导入并创建BuildCopier的实例: import { BuildCopier } from "buildcopier...

    pyvuka:通用的全球数据分析平台,用于分析科学数据

    该项目得到了蛋白质创新研究所,波士顿AutoLytics,阿迪玛布,微梯度流体技术,麻省大学医学院和宾夕法尼亚大学的支持安装pip安装PyVuka以PyVuka作为python库的示例代码import PyVuka . ModuleLink . toPyVuka as ...

    freemarker总结

    使用import指令导入库到模板中,Freemarker会为导入的库创建新的名字空间,并可以通过import指令中指定的散列变量访问库中的变量: <#import "/lib/my_test.ftl" as my> ${my.mail} ${mail} 输出结果...

    smaliemu:小型模拟器

    'new-instance v0, Ljava/lang/String;', 'new-array v1, v4, [B', 'const/16 v2, 0x44', 'aput-byte v2, v1, v3', 'invoke-direct {v0, v1}, Ljava/lang/String;->([B)V', 'return-object v0' ] ret = emu....

    autoroutes:速度路线

    # Create a Routes instance from autoroutes import Routes routes = Routes () # Register a new route routes . add ( 'path/to/resource/{id}' , something = 'value' , anything = 'else' ) # Try to match a ...

Global site tag (gtag.js) - Google Analytics