【发布时间】:2021-04-01 00:12:13
【问题描述】:
我有一个数字类,其中有两个方法:
def digit_sum(self):
"""Returns the sum of all the digits"""
str_num = str(self.num)
ans = Number(0)
for item in str_num:
ans += Number(item)
return ans
def digit_product(self):
"""Returns the sum of all the digits"""
str_num = str(self.num)
ans = Number(1)
for item in str_num:
ans *= Number(item)
return ans
我希望这些方法可以像函数一样被访问,例如,我会输入x = digit_product(Number(54))
有没有办法在python中做到这一点?
【问题讨论】:
-
你能解释一下为什么这是可取的吗?这些函数/方法显然对非
Numbers 没有任何意义,那为什么不直接做Number(54).digit_product()呢?这闻起来是an XY problem。 -
能否请您包括
Number类定义的其余部分,即__init__和相关属性? -
我可以想象您可能想要这样做的一个原因是将作为参数传递给
map、sort或类似的。例如。numbers.sort(key=Number.digit_product)根据数字产品对数字列表进行排序。 -
实际上,参数不需要是
Number;那时,我们基本上是在讨论一个替代构造函数,像x = Number.digit_product(54)一样访问