我正在定义一个代表向量的类:
'''
An entity with size and direction
'''
UNINITIALIZED = -1
class myVector():
def __init__(self,direction = UNINITIALIZED,size = UNINITIALIZED):
self.direction = direction
self.size = size
对于使用该类,我设想了 2 个场景:要么我知道向量在启动时的特性,然后用这些值启动它:
v = myVector(4,2)
或者我在启动时不知道这些,然后我很高兴它将获得默认值。
然而,通过上述实现,实现了第三种情况——仅使用第一个参数启动向量:
v = myVector(4)
在这种情况下,只有第二个参数 ( size ) 将被分配默认值,并且生成的对象没有多大意义。
正如我所看到的,在这种情况下所需的行为是使用两个参数或不使用。实现这一点的一种方法是在这种情况下引发异常。
def __init__(self,direction = UNINITIALIZED,size = UNINITIALIZED):
if (direction != UNINITIALIZED) and (size == UNINITIALIZED):
raise Exception('Use both parameters or none')
self.direction = direction
self.size = size
你认为优雅地做到这一点的pythonic方式是什么?