在 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"
【讨论】:
这会为我返回<property at 0x121101450>
【参考方案2】:
看看property的装饰器形式。
@property
def baz(self):
return "baz"
【讨论】:
以上是关于在 Python 类中将函数作为属性访问的主要内容,如果未能解决你的问题,请参考以下文章
python0.16------构造函数/析构函数/self详解/重写/访问限制/对象属性和类属性/@property/运算符重载