【发布时间】:2014-05-25 23:00:55
【问题描述】:
class SchoolOfFish:
def __init__(self, position, fish_class=Fish, number_of_fish=1):
self.position = position
self.timer = 0
self.list_of_fish = []
for i in range(number_of_fish):
self.list_of_fish.append(fish_class(screen.size / 2))
class SchoolOfFish:
def __init__(self, position, number_of_fish=1):
self.position = position
self.timer = 0
self.list_of_fish = []
for i in range(number_of_fish):
self.list_of_fish.append(Fish(screen.size / 2))
这两个都做同样的事情,即用前一个类“Fish”的实例填充 SchoolOfFish.list_of_fish。在第一个示例中包含变量“fish_class”是否有优势? 此外,我一直无法找到有关在类 init 方法中将默认值设置为参数的 Python 文档。你能给我解释一下它是如何工作的吗?
【问题讨论】:
-
您是否经常更改
fish_class以至于需要使其可配置?如果不是,那么这只会增加不必要的复杂性。 在类__init__方法中设置默认值作为参数是什么意思? -
对于这个程序,没有 fish_class 不会改变,所以它是不必要的复杂性。我可能在这里使用了错误的词,但我很好奇在 init 方法参数中设置 SchoolOfFish 的属性值,例如 def __init__(number_of_fish=1)。正确的术语是什么?
-
至于你的第二个问题,它们只是被称为默认参数值:docs.python.org/2/tutorial/…