将列表传递给类初始化__

2024-06-28 15:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在努力理解课堂结构。在

这个例子是一个带有__size__toppings_list的比萨饼订单。 我可以很容易地通过尺寸,但它不会让我通过作为一个清单的浇头 我一直在

size = small
toppings = small

无论我如何调用__string__print函数,它都不会起到很好的效果。在

^{pr2}$

Tags: 函数订单sizestring尺寸结构list例子
1条回答
网友
1楼 · 发布于 2024-06-28 15:38:02

你的代码中有很多小的奇怪的东西。在

首先,修复get_topping方法(如注释中所述),重新创建实例,它将起作用——这是为了解决您的主要问题。在

小事,但强烈推荐:

  • 使用[empty]列表作为默认参数不是一个好主意,除非您知道自己在做什么。“函数是可变的”。因此,更改默认值一次将影响所有后续调用。

  • 您试图用__string__实现^{}

  • 请在使用__attr时三思而后行。如果您对Java之类的语言有经验,这看起来可能是个好主意,但在python中,以这种方式“隐藏”属性通常是个坏主意。这仍然可以供用户使用,同时使你的类很难继承,而非协作类的工作也不好玩。如果要标识非公共接口-请考虑使用单下划线(_size)。如果你不确定这是否应该公开-让它公开。您总是可以在不破坏接口的情况下使其@property。这同样适用于get_...方法-如果您检索属性时没有属性,那么使用这样的代码是没有意义的。只要有self.size属性并使用它就可以了。如果您百分之百确定不想在实例化后使其可编辑,请将其设为可编辑

    def __init__(...):
        self._size = ...
    @property
    def size(self):
        return self._size
    

相关问题 更多 >