【发布时间】:2013-07-23 07:45:38
【问题描述】:
我正在定义一个代表向量的类:
'''
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方式是什么?
【问题讨论】: