最好在每个类中或仅在需要时才包含对象?

时间:2019-07-03 14:08:40

标签: python

假设我有“比萨”类:

选项1:

class Pizza:
    def __init__(self, tools):
        self.tools = tools
        self.slices = []

    def cut(self, slices: int):
        self.slices = self.tools.pizza_cutter(slices=slices)

    def eat(self, slices: int):
        if len(self.slices) => slices:
            diff = len(self.slices) - slices
            self.slices[:diff]
        else:
            print('Not enough slices to eat!')

选项2:

class Pizza:
    def __init__(self):
        self.slices = []

    def cut(self, slices: int, tools):
        self.slices = tools.pizza_cutter(slices=slices)

    def eat(self, slices: int):
        if len(self.slices) => slices:
            diff = len(self.slices) - slices
            self.slices[:diff]
        else:
            print('Not enough slices to eat!')

如您所见,它要么在tools中加载__init__,要么只是在实际使用它的方法中接收tools实例。

我想知道,最好的方法是什么?考虑到每个循环创建了多个Pizza实例,并且在该循环结束时,我cut()全部Pizza s

1 个答案:

答案 0 :(得分:3)

通常,我将通过描述方式来确定是否在课程中包括某些内容。

  • 匹萨类的第一个实例包含匹萨的所有部分以及切比萨的工具。
  • 第二类披萨包含披萨的所有部分。

当“ and”一词出现时,我知道我在一堂课中投入过多,需要将其分开。在这种情况下,工具不是比萨饼的固有部分。您可以在没有工具的情况下切比萨饼。没有工具,比萨饼可能很难切开,但这并不能像比萨饼一样。

考虑到这一点,我建议您不要将工具放在您的比萨饼中