如何在Python中将方法作为属性调用?

时间:2016-01-11 11:45:24

标签: python class object methods properties

我们说我有一个代表用户的班级:

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'

1 个答案:

答案 0 :(得分: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中,并让您将其作为类的任何属性进行操作。