2011-10-30 20 views
12

私は、クラス定義の外Pythonのプロパティを定義したいと思います:外のプロパティを定義するための正しい構文は何クラス定義のPythonプロパティ* outside *を定義するにはどうすればよいですか?

AttributeError: 'property' object has no attribute 'email' 

c = C() 
c.user = property(lambda self: User.objects.get(self.user_id)) 
print c.user.email 

しかし、私は次のエラーを取得しますクラス定義?

編集:私は性質を持つことはできませんcようlettuce

from lettuce import * 
from django.test.client import Client 
Client.user_id = property(lambda self: self.browser.session.get('_auth_user_id')) 
Client.user = property(lambda self: User.objects.get(self.user_id)) 

@before.each_scenario 
def set_browser(scenario): 
    world.browser = Client() 

答えて

12

Objectインスタンスを使用しています。 Cのようなクラスだけがプロパティを持つことができます。 Pythonは唯一のクラスでそれを探しますので、だからあなたは、クラスではなく、インスタンスのプロパティを設定する必要があります。

C.user = property(lambda self: User.objects.get(self.user_id)) 
+0

フム、私はそれを試してみましたが、私はこのエラーを取得:はAttributeError:「thread._local」オブジェクト'user'属性がありません –

+1

*エラーを受け取った場合は、この問題に、あなたの質問で認めてもらえないほど動いている部分があることを意味します。 :)あなたに実際のコードとあなたが使っている 'import'ステートメントとライブラリを教えてください。その代わりに、スレッドローカルエラーが発生している理由を示します。 –

+0

上記の私の編集を参照してください。 –

関連する問題