pyspider源代碼-run.py之getattr,__import__

run.py里面有很多這樣的代碼。各個(gè)組件拿到run.py

Scheduler = load_cls(None, None, scheduler_cls)

load_cls方法

def load_cls(ctx, param, value):
    if isinstance(value, six.string_types):
        return utils.load_object(value)
    return value

utils.load_boject()方法代碼

def load_object(name):
    """Load object from module"""

    if "." not in name:
        raise Exception('load object need module.object')

    module_name, object_name = name.rsplit('.', 1)
    if six.PY2:
        module = __import__(module_name, globals(), locals(), [utf8(object_name)], -1)
    else:
        module = __import__(module_name, globals(), locals(), [object_name])
    return getattr(module, object_name)

import

其實(shí)就是導(dǎo)入包。感覺可以直接導(dǎo)入罕扎,沒什么問題

>>>req = __import__('requests')
>>>req.get('http://www.baidu.com')
<Response [200]>

這里就相當(dāng)于from module_name import object_name

 module = __import__(module_name, globals(), locals(), [utf8(object_name)], -1)

getattr

getattr(object,name)和object.name是一樣的功能.只不過這里可以把name作為一個(gè)變量去處理

path = getattr(sys, "path")

from . import xxx

這里其實(shí)就是一個(gè)相對引用。
pyspider作者為了使用這個(gè)相對引用丐重,舉個(gè)例子來說腔召。
webui文件夾中init.py文件

from . import app, index, debug, task, result, login

這里相對引用導(dǎo)入app, index, debug, task, result, login等模塊。
但是在run.py文件弥臼,應(yīng)該怎么用呢宴咧。

  if six.PY2:
        module = __import__(module_name, globals(), locals(), [utf8(object_name)], -1)
    else:
        module = __import__(module_name, globals(), locals(), [object_name])

先用這樣的代碼導(dǎo)入init中的模塊
例如

>>> app = 'pyspider.webui.app'
>>> module = __import__(module_name, globals(), locals(), [object_name]) #module 相當(dāng)于 from pyspider.webui import __init__

之后根灯,通過getattr拿到想要的對象或者方法

getattr(module,'app') #拿到webui/app這個(gè)模塊

具體代碼在github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末径缅,一起剝皮案震驚了整個(gè)濱河市掺栅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纳猪,老刑警劉巖氧卧,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氏堤,居然都是意外死亡沙绝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門鼠锈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闪檬,“玉大人,你說我怎么就攤上這事购笆〈置酰” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵同欠,是天一觀的道長样傍。 經(jīng)常有香客問我,道長铺遂,這世上最難降的妖魔是什么衫哥? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮襟锐,結(jié)果婚禮上撤逢,老公的妹妹穿的比我還像新娘。我一直安慰自己粮坞,他們只是感情好笛质,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捞蚂,像睡著了一般妇押。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姓迅,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天聂示,我揣著相機(jī)與錄音,去河邊找鬼纵竖。 笑死墓造,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的解寝。 我是一名探鬼主播扩然,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼聋伦!你這毒婦竟也來了夫偶?” 一聲冷哼從身側(cè)響起界睁,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兵拢,沒想到半個(gè)月后翻斟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡说铃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年访惜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腻扇。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡债热,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幼苛,到底是詐尸還是另有隱情阳柔,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布蚓峦,位于F島的核電站舌剂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏暑椰。R本人自食惡果不足惜霍转,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望一汽。 院中可真熱鬧避消,春花似錦、人聲如沸召夹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽监憎。三九已至纱意,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲸阔,已是汗流浹背偷霉。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褐筛,地道東北人类少。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像渔扎,于是被迫代替她去往敵國和親硫狞。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)残吩,斷路器财忽,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法世剖,內(nèi)部類的語法定罢,繼承相關(guān)的語法笤虫,異常的語法旁瘫,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • 昨晚開直播酬凳,突然和粉絲扯到了前任這個(gè)話題。一開始大家都是各種云淡風(fēng)輕地吐槽遭庶,可越到后面宁仔,直播間的氣氛越來越不對。 ...
    穆清晨閱讀 292評論 0 0
  • (給我2秒鐘靜靜陪姐看著彈幕刷啊刷不說話) 又到一年一度開學(xué)大片上映的時(shí)候煎谍,剛剛開學(xué),要買的東西一定很多吧龙屉。沒有關(guān)...
    全歐小語種閱讀 186評論 0 0
  • 兩個(gè)人重新自信的時(shí)候已經(jīng)適用,因?yàn)檫@些東西自然會開始,
    不像話的故事閱讀 50評論 0 0