2009-08-12 65 views
1

調用我新的Python和掛架雖然在PHP的經驗。導入模型/庫類和控制器

我試圖寫一個模型類將作爲我的數據庫(CouchDB的)一個我的數據訪問。我的問題很簡單

我的模型看起來是這樣的,被稱爲模特/ BlogModel.py

from couchdb import * 

class BlogModel: 

    def getTitles(self): 
     # code to get titles here 

    def saveTitle(self): 
     # code to save title here 

我的控制器稱爲控制器/ main.py

import logging 

from pylons import request, response, session, tmpl_context as c 
from pylons.controllers.util import abort, redirect_to 

from billion.lib.base import BaseController, render 

log = logging.getLogger(__name__) 

from billion.model import BlogModel 

class MainController(BaseController): 

    def index(self): 
     return render('/main.mako') 

在我的索引行動,如何我在BlogModel中訪問方法getTitles()嗎?

我已經試過

x = BlogModel() 
x.getTitles() 

,但我得到 類型錯誤: '模塊' 對象不是可調用

而且 BlogModel.getTitles()導致 AttributeError的: '模塊' 對象有沒有屬性「getTitles」

這是到我包括類的方式嗎?有人能告訴我做這件事的最好方法嗎?

感謝

回答

2
x = BlogModel.BlogModel() 

,或者更冗長:

你做的導入後,你有你的命名空間稱爲 'BlogModel' 的對象。該對象是BlogModel模塊。 (模塊名稱來自文件名。)在該模塊內部,有一個名爲'BlogModel'的類對象,這就是您以前的樣子。 (類名來自你寫的源代碼。)

相反的:

from billion.model import BlogModel 

你可以使用:

from billion.model.BlogModel import BlogModel 

那麼你

x = BlogModel() 

會工作。

+0

+1嗯解釋 – balpha 2009-08-12 20:19:47

+0

在python中習慣使用小寫字母命名模塊,以避免這種混淆:from billion.model.blogmodel import BlogModel – 2009-09-17 18:54:54