2016-04-09 77 views
1

我想讓Python的裝飾器爲我工作。我無法理解爲什麼這不起作用:Python類屬性修飾器不工作

class toy(object): 

    @property 
    def toyname(self): 
     return 'lol' 

a = toy 
print(a.toyname) 

當我運行它,我得到以下的輸出:

<property object at 0x03362FC0> 

屬性,似乎沒有被評估。

我見過Python 2.x的幾個答案,提到我需要子類object才能使屬性正常工作;然而,迄今爲止我所遇到的答案並不能解決我的問題。

+0

你想創建一個_class_財產或財產_instance_? – Eric

回答

4

這是導致問題的行a = toya = toy意思是說「將變量a指向類toy的定義」。你實際上想要做的是a = toy(),來實例化一個類型爲toy的對象並將其保存在a中。

+0

謝謝!那是我的問題。這真是一個令人生厭的錯誤! – user2785724

1

toy是你班上的藍圖。 toy()是您可以使用的類的新副本或新實例。你需要「實例化」它,這意味着你需要創建一個新的實例來分配給一個類。換句話說,你需要的不是a = toy()a = toy

試試這個:

class toy(object): 
    @property 
    def toyname(self): 
     return 'lol' 

a = toy() 
print(a.toyname)