温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Is it better to include an object in every class or only when it's needed?

python - 在每个类中或仅在需要时才包含对象更好吗?

发布于 2020-03-27 10:58:23

假设我有“ Pizza”类:

选项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小号

查看更多

查看更多

提问者
A. Dandelion
被浏览
13
codeWonderland 2019-07-03 22:18

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

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

当“和”这个词开始起作用时,我知道我已经在一个班级投入过多,需要将其分开。在这种情况下,工具不是比萨饼的固有部分。您可以不用任何工具即可切比萨饼。如果没有工具,比萨饼可能很难切开,但这并没有比萨饼那么少。

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