首页 > 解决方案 > python - 如何防止类生成具有早期实例化中使用的属性的对象,但不停止代码

问题描述

ids = []
class Car:
    def __init__(self, id_no, *args):
        if id_no in ids:
            raise Exception('Duplicate id')
        self.car_data = [id_no, *args]
        ids.append(id_no)
car_1 = Car('WBA123', 'BMW', '530')
car_2 = Car('WBA123', 'Ford', 'Mustang')
car_3 = Car('WDB567', 'Mercedes', 'S400')

因此,不应创建 car_2 而是显示消息,但应创建 car_3。

标签: python-3.xclasstry-catchinitraiserror

解决方案


如果您希望代码不停止,则应使用try-catch块捕获异常。但是由于您需要为创建该类的每个实例而这样做,因此最好为它创建一个汽车制造商函数。如下所示:

ids = []
class Car:
    def __init__(self, id_no, *args):
        if id_no in ids:
            raise Exception('Duplicate id')
        self.car_data = [id_no, *args]
        ids.append(id_no)


def build_car(*args):
    try:
        return Car(*args)
    except Exception as e:
        print(e)


car_1 = build_car('WBA123', 'BMW', '530')
car_2 = build_car('WBA123', 'Ford', 'Mustang')
car_3 = build_car('WDB567', 'Mercedes', 'S400')

推荐阅读