2016-07-27 88 views
-1

我有一個類似的類:分配模型方法的返回值模型屬性

class X(models.Model): 
    def hello(self): 
    return "Humpty Dumpty" 

    name = (hello,) 
    age = models.IntegerField() 

現在,當我在控制檯中運行:y.namey一個實例,我得到如下:

(物業對象在0x0000000004FDCBD8)

我在做什麼錯在這裏?

我嘗試使用上述方法的@property,但沒有奏效。

我想,當我訪問y.name得到「矮胖」。所以這個方法會把它的值賦給這個屬性。

+2

你還沒有說你想要這個任務做什麼。另外,我無法重現您看到打印的「屬性對象」值。 –

+0

@NedBatchelder我的壞。 – Onilol

回答

2

如果你只是想呼籲屬性訪問函數,定義名稱作爲財產,並提供你的函數foo它:

name = property(hello) 

這將設置財產內的fget您的功能hello

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

請注意,Python官方文檔中有一個相當不錯的tutorial on descriptors

+0

謝謝,夥計。我找不到這方面的確切文件。 – Onilol

+0

你能否告訴如何在另一個方法中使用方法? – Onilol

+0

不完全確定你的意思,調用另一種方法內的方法? –

0

這是無效的語法。你需要做這樣的事情:

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