require named parameters in python function
我已经创建了一个类,我想给用户(可能是我)两种不同的初始化方法。在这个例子中,这个类叫做
两组笛卡尔坐标,表示最小值和最大值(x,y)。
一组笛卡尔坐标表示最小值和框的尺寸。
我可以通过使用命名参数来实现这一点,但是如果没有调用命名参数,我想引发一个错误。在没有调用命名参数的情况下,我当前的代码将一个名为
1 2 3 4 5 6 7 8 9 10 | class Box(object): def __init__(self, pass_var=None, coordinates=None, min_points=None, dimensions=None): if coordinates: setup_box_from_coordinates() return elif min_points and dimensions: setup_box_from_dimensions() return raise NameError("Box Class needs to be initiated with 'coordinates='' or 'min_pts= & dimensions='" |
如果您使用的是python 3.x,那么可以使用
1 2 3 4 | class Box(object): def __init__(self, *, coordinates=None, min_points=None, dimensions=None): ... |
在2.x中,您不会自动获得错误,但可以这样做,例如:
1 2 3 4 5 6 | class Box(object): def __init__(self, *args, coordinates=None, min_points=None, dimensions=None): if args: raise TypeError('positional arguments not supported') ... |
但是,提供创建类的不同方法的常规方法是使用类方法,例如:
1 2 3 4 5 6 7 8 9 | class Box(object): @classmethod def from_coordinates(cls, coordinates): ... @classmethod def from_min_dimensions(cls, min_, dimensions): ... |