gpt4 book ai didi

python - 将类属性别名为函数

转载 作者:行者123 更新时间:2023-11-28 21:52:31 26 4
gpt4 key购买 nike

是否可以做类似下面的事情:

class foo():
def bar(): # a method that doesn't take any args
# slow calculation
return somefloat

b = bar # bar is a function but b just gives you the float attribute

f = foo()
f.b # returns somefloat but doesn't require the empty parentheses

我希望这个例子很清楚,因为我不太清楚我想做的事情的术语是什么。我的基本目标是为没有参数的方法删除一堆括号,以使代码更清晰易读。

该函数速度慢且很少使用,因此实时计算它比提前计算一次并存储变量更容易。

这可能吗?这是好的做法吗?有没有更好的办法?

最佳答案

实现此目的的标准方法是使用 property ,这是一个 decorator :

class Foo():

@property
def bar(self):
# slow calculation
return somefloat


f = Foo()

f.bar # returns somefloat but doesn't require the empty parentheses

需要注意的几点:

  1. 您仍然需要像往常一样在方法签名中使用 self,因为有时您需要引用例如self.some_attribute 方法内部。如您所见,这根本不会影响属性的使用

  2. 没有必要让您的 API 同时包含 f.bar() 方法和 f.b 属性 - 最好决定什么最适合你的类(class)比提供一堆不同的方法来做同样的事情。

关于python - 将类属性别名为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28185313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com