2024-06-28 15:38:02 发布
网友
我在努力理解课堂结构。在
这个例子是一个带有__size和__toppings_list的比萨饼订单。 我可以很容易地通过尺寸,但它不会让我通过作为一个清单的浇头 我一直在
__size
__toppings_list
size = small toppings = small
无论我如何调用__string__print函数,它都不会起到很好的效果。在
__string__
你的代码中有很多小的奇怪的东西。在
首先,修复get_topping方法(如注释中所述),重新创建实例,它将起作用——这是为了解决您的主要问题。在
get_topping
小事,但强烈推荐:
使用[empty]列表作为默认参数不是一个好主意,除非您知道自己在做什么。“函数是可变的”。因此,更改默认值一次将影响所有后续调用。
您试图用__string__实现^{}
请在使用__attr时三思而后行。如果您对Java之类的语言有经验,这看起来可能是个好主意,但在python中,以这种方式“隐藏”属性通常是个坏主意。这仍然可以供用户使用,同时使你的类很难继承,而非协作类的工作也不好玩。如果要标识非公共接口-请考虑使用单下划线(_size)。如果你不确定这是否应该公开-让它公开。您总是可以在不破坏接口的情况下使其@property。这同样适用于get_...方法-如果您检索属性时没有属性,那么使用这样的代码是没有意义的。只要有self.size属性并使用它就可以了。如果您百分之百确定不想在实例化后使其可编辑,请将其设为可编辑
__attr
_size
@property
get_...
self.size
def __init__(...): self._size = ... @property def size(self): return self._size
你的代码中有很多小的奇怪的东西。在
首先,修复
get_topping
方法(如注释中所述),重新创建实例,它将起作用——这是为了解决您的主要问题。在小事,但强烈推荐:
使用[empty]列表作为默认参数不是一个好主意,除非您知道自己在做什么。“函数是可变的”。因此,更改默认值一次将影响所有后续调用。
您试图用}
__string__
实现^{请在使用
__attr
时三思而后行。如果您对Java之类的语言有经验,这看起来可能是个好主意,但在python中,以这种方式“隐藏”属性通常是个坏主意。这仍然可以供用户使用,同时使你的类很难继承,而非协作类的工作也不好玩。如果要标识非公共接口-请考虑使用单下划线(_size
)。如果你不确定这是否应该公开-让它公开。您总是可以在不破坏接口的情况下使其@property
。这同样适用于get_...
方法-如果您检索属性时没有属性,那么使用这样的代码是没有意义的。只要有self.size
属性并使用它就可以了。如果您百分之百确定不想在实例化后使其可编辑,请将其设为可编辑相关问题 更多 >
编程相关推荐