0
是否有一个关于如何同时执行相同操作的方法和函数(或者是否要这样做)的约定?同时拥有一个方法和一个函数吗?
考虑,例如,
from random import choice
from collections import Counter
class MyDie:
def __init__(self, smallest, largest, how_many_rolls):
self.min = smallest
self.max = largest
self.number_of_rolls = how_many_rolls
def __call__(self):
return choice(range(self.min, self.max+1))
def count_values(self):
return Counter([self() for n in range(self.number_of_rolls)])
def count_values(randoms_func, number_of_values):
return Counter([randoms_func() for n in range(number_of_values)])
其中count_values
既是一种方法和功能。
我觉得很高兴有这个方法,因为结果“属于”MyDie对象。此外,该方法可以从MyDie
对象中提取属性,而不必将它们传递给count_values
。在另一方面,这是不错的功能,以便就比MyDie
其他功能操作,如
count_values(lambda: choice([3,5]) + choice([7,9]), 7)
是不是最好这样做如上(其中的代码重复,承担的功能是一个较长一段代码,不只是一条线)或
def count_values(self):
return count_values(self, number_of_rolls)
或只需更换count_values
方法摆脱方法一起,只是有一个功能?或者也许别的东西?