2016-01-11 38 views
1

比方說,我有一個代表用戶等級:如何在Python中將方法作爲屬性調用?

class User(object): 
    def __init__(): 
     self.first_name = 'Mr' 
     self.last_name = 'Anderson' 
    def name(): 
     return self.first_name + ' ' + self.last_name 

name輔助方法,我可以輕鬆地獲得全名:

>>> u = User() 
>>> u.first_name 
'Mr' 
>>> u.name() 
'Mr Anderson' 

但問題是,我不想要撥打name作爲一種方法,但作爲一種財產。有沒有一種方法,我可以把它這樣的表現:

>>> u = User() 
>>> u.name 
'Mr Anderson' 
+0

當我將這個問題的標題粘貼到Google搜索中時,鏈接副本是第一個結果。 – TigerhawkT3

回答

2

你必須使用@property裝飾。

class User(object): 
    def __init__(): 
     self.first_name = 'Mr' 
     self.last_name = 'Anderson' 

    @property 
    def name(): 
     return self.first_name + ' ' + self.last_name 

如果你不熟悉decorator,你要知道,這些都是包裝到有預先準備的方法或函數的函數或類。

因此,使用@property裝飾器將您的函數包裝到類property中,並讓您將其作爲類的任何屬性進行操作。

+0

太棒了,謝謝! – kramer65

相關問題