在 Python 类中将函数作为属性访问

Posted

技术标签:

【中文标题】在 Python 类中将函数作为属性访问【英文标题】:Accessing function as attribute in a Python class 【发布时间】:2011-08-08 00:24:20 【问题描述】:

我的情况是,将类的实例方法作为属性访问是非常有用的(尽管不是绝对必要的)。 (这是一个使用 getattr 为字典设置一些返回值的 API,我不想把这个整洁的小东西弄乱)

我记得读过一些关于 @attribute 装饰器的文章,但我找不到(在 Python 或 Django 中)

TL;DR:

我该怎么做:

class foo:
    bar = "bar"
    def baz(self):
        return "baz"

这样做:

>>> f = foo()
>>> f.baz
"baz"

(为清楚起见进行编辑)而不是这个:

>>> f = foo()
>>> f.baz
<bound method foo.baz of <__builtin__.foo instance at 0x...>>

【问题讨论】:

【参考方案1】:

您可以使用@property 装饰器。

class foo(object):
    bar = "bar"
    @property
    def baz(self):
        return "baz"

【讨论】:

这会为我返回 &lt;property at 0x121101450&gt;【参考方案2】:

看看property的装饰器形式。

@property
def baz(self):
  return "baz"

【讨论】:

以上是关于在 Python 类中将函数作为属性访问的主要内容,如果未能解决你的问题,请参考以下文章

python 类中的变量传递给类中的函数

如何在类中将函数作为参数传递?

python0.16------构造函数/析构函数/self详解/重写/访问限制/对象属性和类属性/@property/运算符重载

是否可以在 Flutter 的函数中将类作为参数传递?

如何在 Python 中将列表作为函数的输入传递

如何在域类中将 Taglib 作为函数调用