我已经创建了这个Python类,用于输入可能是新产品,二手产品或翻新产品的某些产品(该.lower()
功能实现了不区分大小写)。条件参数的其他任何条目都应给出错误(ValueError),我希望代码继续进行下一行。
Random_Product_1
是第一个也是完美的新对象。没问题。我故意弄错了下一个物体的状况Random_Product_2
。这应该打印ValueError
。它的确有,但也有其他错误内容。这导致代码停止在其轨道上。创建对象(输入正确的条件值)的下一行代码根本不会运行。
我基本上是在尝试使错误条目的代码跳过,例如Random_Product_2
转到下一行代码。到目前为止,这是我的基本代码,一旦解决此问题,我计划在此基础上构建其他内容。
class Product:
def __init__(self, Id, price, inventory, condition):
self.condition = condition.lower()
if self.condition != "new" and self.condition != "used" and self.condition != "refurbished":
raise ValueError('condition can only be new or used or refurbished')
self.Id = Id
self.price = price
self.inventory = inventory
Random_Product_1 = Product('What_is_this', 50, 81, "Used") # defined perfectly
Random_Product_2 = Product('What_is_this', 50, 85, "Useed") # not defined at all, code doesn't go to next line
Random_Product_3 = Product('What_is_this', 500, 805, "Used") # This is not run
您的问题描述不准确:该if
语句无法“跳至下一个条目”,因为该下一个条目是由调用程序控制的,而不是由调用程序控制的__init__
。所有你可以在初始化要做的就是控制设置了这个的一个对象。
根本问题是您说希望程序继续运行,但是您使用了专门中止程序的语言工具。很简单,您需要决定要选择哪一个。假设您希望尽可能顺利地完成当前的初始化,请尝试以下操作:对照有效选择列表检查给定选择。如果不在该列表中,请发出一条简单消息并尽最大可能完成初始化。
def __init__(self, Id, price, inventory, condition):
valid_condition = ("new", "used", "refurbished")
self.condition = condition.lower()
if self.condition not in valid_condition:
print('condition can only be new or used or refurbished. ',
'Setting to "unknown"')
self.condition = "unknown"
self.Id = Id
self.price = price
self.inventory = inventory
那是你想要的效果吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句