ベクトルを表すクラスを定義しています。
'''
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)
または、開始時にこれらを知らないので、デフォルト値を取得できることを嬉しく思います。
ただし、上記の実装では、3 番目のシナリオが実現されます。最初の引数のみを使用してベクトルを開始します。
v = myVector(4)
この場合、2 番目のパラメーター ( size ) のみにデフォルト値が割り当てられ、結果のオブジェクトはあまり意味がありません。
私が見ているように、この場合の望ましい動作は、両方のパラメーターを使用するか、何も使用しないことです。これを実装する 1 つの方法は、このような場合に例外を発生させることです。
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の方法は何だと思いますか?