2009-08-12 8 views
1

PHPで経験はあるが、Pythonとパイロンは初めてです。モデル/ライブラリクラスのインポートとコントローラからの呼び出し

データベース(couchdb)へのデータアクセスとして機能するモデルクラスを作成しようとしています。私の問題は私のモデルは、このようになりますし、私のコントローラがどのように、コントローラ/ main.py

私のindexアクションで
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.py

from couchdb import * 

class BlogModel: 

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

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

と呼ばれる

簡単ですBlogModelのgetTitles()メソッドにアクセスしますか?

私は

x = BlogModel() 
x.getTitles() 

を試してみたが、私は TypeError例外を取得: はAttributeErrorでの 'モジュール' オブジェクトが呼び出すことはできません

また BlogModel.getTitles()結果: 'モジュール' オブジェクトはありませんがありますが属性 'getTitles'

これは私がクラスを含む方法ですか?誰かがこれを行うための最善の方法を教えてもらえますか?

おかげ

答えて

2
x = BlogModel.BlogModel() 

あるいは、より冗長:インポートをした後

は、あなたが 'BlogModel' と呼ばれる自分の名前空間内のオブジェクトを持っています。そのオブジェクトはBlogModelモジュールです。 (モジュール名はファイル名に由来します)。そのモジュールの中には、 'BlogModel'というクラスオブジェクトがあります。 (クラス名はあなたが書いたソースコードから来ている。)

の代わりに:

from billion.model import BlogModel 

あなたは使用することができます

from billion.model.BlogModel import BlogModel 

を、あなたの

x = BlogModel() 

が働くだろう。

+0

+1よく分かりました – balpha

+0

pythonでは、この種の混乱を避けるために、小文字を使用してモジュールに名前を付けるのが通例です:from billion.model.blogmodel import BlogModel –

関連する問題