在python中,如何防止一个类生成一个带有先前实例化中使用的属性的对象,但不停止代码。

问题描述 投票:0回答:1
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.x class try-catch init raiserror
1个回答
0
投票

如果你想让代码不停止,你应该使用以下方法捕获异常 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')
© www.soinside.com 2019 - 2024. All rights reserved.