【发布时间】:2021-02-26 22:08:56
【问题描述】:
作业包含以下说明:
第二部分 – 工厂类
此类充当其他具体 Fruitclasses 的基类,例如 Orange 和 Apple。正如标题所暗示的,这个类也将作为这些派生类的工厂。这 类应具有以下方法:
• __init__(self)
o 此方法主要是占位符。在调试时调用它时打印一条消息。
• 价格(自己)
o 返回商品的价格。
o 这也是派生类使用的占位符。它只需要返回 0。
• 准备(自己)
o 此方法是派生类使用的占位符。
o 在派生类中,此方法充当封装复杂过程的外观
用于准备水果。
**• order_fruit(fruit_type) # 注意没有'self'
o 此方法充当制作水果对象的工厂方法。
o 这个方法应该是静态的,所以用@staticmethod 装饰器标记它。
o 开工流程如下:
▪ 确保fruit_type 是一个字符串并修剪并将其转换为小写
▪ 创建字符串所要求类型的对象
• 所以如果它是“橙色”:
o 水果 = Orange()
▪ 创建水果对象后,您将调用它的 prepare() 方法
我需要粗体部分的帮助。我有这个:
class Fruit():
def __init__(self):
print(f"Fruit.__init__")
def price(self):
return 0
def prepare(self):
print(f"Preparing {fruit}")
@staticmethod
def order_fruit(fruit_type):
fruit= str(fruit_type.lower().strip())
prepare(fruit)
#I can't figure out how to get it to call, for example, Orange.prepare()
我可能误解了说明。
【问题讨论】:
-
这个问题不属于 StackOverflow,因为它是针对您自己的问题,不会帮助任何未来的读者。话虽如此,粗体是直截了当的:工厂接受一个字符串,然后通过一些 if 语句运行它。如果字符串是
fruit_type,那么它会删除它的空白并将其转换为小写fruit_type= fruit_type.trim().lower(),然后说if fruit_type == "orange": return Orange()。 -
@Kraigolas 关于你的问题不属于这里的说法是不正确的 IMO,所以你可以忽略它的那部分。
-
@martineau 请参阅meta.stackoverflow.com/questions/334822/…。欢迎您回答这个问题——事实上我确实回答了这个问题——但大多数用户对这类问题的反应是消极的。如果你不能开始一个问题,你应该咨询你的笔记和教授,这个问题对未来的读者没有帮助,这是 StackOverflow 的主要目标。您是正确的,这是基于意见的,但我的意思是这样的问题往往会被否决。
-
@Kraigolas:你真的应该学习如何建立正确的链接。如果链接问题中有适用于此处的内容,您应该提及它。无论如何,我仍然不同意你对这个问题的评价。