动态调用类,需要时才加载相应的类 - V2EX
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sbmzhcn

动态调用类,需要时才加载相应的类

  •  
  •   sbmzhcn Nov 19, 2014 4634 views
    This topic created in 4192 days ago, the information mentioned may be changed or developed.
    初学python,对类了解不是很多,现在有一个需求,想请教如何操作:

    现开发一个批量发布博客的工具,但博客都不是同一类型的,所以可能需要对不同的域名进行不同的设置,假设有100个域名,我为每个域名都新建一个类,那我如何操作才能在系统运行时根据域名去判断加载相应的类来使用呢?

    遇到www.domain1.com 使用类 domain1
    遇到www.domain2.com 使用类 domain2

    如果有知道的,万分感谢!
    6 replies    2014-11-22 01:25:50 +08:00
    superbear
        1
    superbear  
       Nov 19, 2014   1
    可以这样动态导入一个类
    把import语句构造成python代码的字符串,再传给exec语句执行:
    >>> modname='string'
    >>> exec "import "+modname
    ryd994
        3
    ryd994  
       Nov 21, 2014
    这种情况应该优先写个markdown之类的模板,然后再写一个解析器。
    真是被OO惯坏了。
    要把可变的做成数据,不可变的提炼出来做成逻辑。
    至于exec……是可行解,是不是办法的办法,如果检查没做好容易出漏洞
    sbmzhcn
        4
    sbmzhcn  
    OP
       Nov 21, 2014
    @ryd994 能详细说说吗,我就是想把可变的做成数据,不可变的提出来。如果有什么示例就好了,我可以研究下。
    crossmaya
        5
    crossmaya  
       Nov 21, 2014
    @sbmzhcn 参考学习__import__函数还有imp模块。
    ryd994
        6
    ryd994  
       Nov 22, 2014 via Android
    @sbmzhcn 比如说,假如发布文章分两步,登录和填写表单。
    首先写一个父类,提供两个方法接口
    然后每个域名一个子类实现
    主程序就接受父类作为参数,然后依次调用方法。
    根据域名,传不同的子类作为参数,一堆if或者case就好
    About     Help     Advertise     Blog     API     FAQ     Solana     3082 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 15:08 PVG 23:08 LAX 08:08 JFK 11:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86