python - 是在每个类中包含一个对象还是仅在需要时包含一个对象更好?

标签 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

最佳答案

通常我会根据我如何描述来决定是否将某些东西包含在一个类中。

  • Pizza 类的第一个实例包含披萨的所有部分和切割它的工具。
  • 第二类披萨包含披萨的所有部分。

当“和”这个词出现时,我知道我在一个类中投入了太多,需要将其分开。在这种情况下,工具不是披萨的固有部分。您可以在没有切割工具的情况下制作比萨饼。如果没有工具,披萨可能很难切开,但这并不会影响它的披萨质量。

考虑到这一点,我建议将工具放在比萨饼之外

关于python - 是在每个类中包含一个对象还是仅在需要时包含一个对象更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56871993/

相关文章:

python - 错误 252 : b"2. 1.5 发送一些邮件,我会尽力 f18sm1267047wiv.14"

python - OR 工具始终返回非常次优的 TSP 解决方案

python - 在 Python 中创建具有多个给定值的掩码数组

python - PEP 8 - 通过添加空格来对齐参数

python - 使用 tensorflow 在 docker 上导入 pandas

python - 读取 InMemoryUploadedFile 两次

python - TruncatedSVD 返回不正确的尺寸

python - Pymongo 聚合不返回游标而是返回对象

python - 在 python 2.7.10-Pycontrol 中全局禁用 ssl 检查

python - 添加到重叠时间的数据框列