2016-07-27 9 views
-1

が、私はこれに似たクラスを持つ属性モデル化するために割り当てモデルのメソッドの戻り値が

y.nameインスタンス yされて、私は次の取得します

(プロパティオブジェクト0x0000000004FDCBD8)

私はここで間違っていますか?

上記の@propertyを使ってみましたが、動作しませんでした。

私はy.nameにアクセスすると "Humpty Dumpty"を取得したいと思います。したがって、このメソッドはその値を属性に割り当てます。

+2

あなたは、その割り当てが欲しいと言っていません。また、私は印刷された "プロパティオブジェクト"の値を再現することはできません。 –

+0

@NedBatchelder私の悪いです。 – Onilol

答えて

2

:あなたはこのような何かをする必要が

name = property(hello) 

これが設定されますあなたの関数のプロパティ内のfgethello

y = X() 
y.name 
'Humpty Dumpty' 

非常に良いtutorial on descriptorsがPython Official docsにあります。

+0

ありがとう、仲間。私はこれに関する正確な文書を見つけることができませんでした。 – Onilol

+0

メソッドを別のメソッドの内部で使用する方法も教えてください。 – Onilol

+0

それがどういう意味なのか、別のメソッドの中でメソッドを呼び出すのはどうですか? –

0

これは無効な構文です。あなただけの、属性アクセスに呼び出される関数を取得するプロパティとして名を定義し、それにあなたの関数fooを提供したい場合は

class X: 
    def __init__(self): 
     self.name = self.hello() 

    def hello(self): 
    return "Humpty Dumpty" 

test = X() 
print(test.name) # prints "Humpty Dumpty" 
+0

これはdjangoにありますか?私はPythonタグを追加しました。なぜなら、Python固有のものかもしれないからです。 – Onilol

+0

いいえ、これは一般的なPythonコードです。 – which1ispink

関連する問題