2017-11-23 15 views
0

私は1次元セグメントクラスに取り組んでいます。すべてのセグメントは2ポイントで定義されます。左境界線と右境界線を定義します。オプションの引数の前に関数でオプションの引数を定義するにはどうすればよいですか?

左の境界線をオプションにしたい(デフォルトは0)。これを行うには、私のクラスのinit関数をdef __init__(self, right, left = 0)と定義します。 しかし、最初に左の引数を与えてセグメントを定義したいと思います。 たとえば、Seg = Segment(1,5)です。 Pythonでは関数を__init__(self, left = 0, right)と定義することはできませんでした。この問題の最適な解決策は何でしょうか?

+2

'* args'を使って、' len(args) 'に基づいて引数の意味を理解してください – khelwood

+0

これはなぜpythonがこれを許さないのかという詳細な情報を提供します:https://stackoverflow.com/questions/16932825/why-いいえn-default-arguments-cant-follows-default-argument – r2d2oid

答えて

0
def my_func(*args): 
     if len(args) == 0: 
       print 'missing mandatory param' 
     elif len(args) == 1: 
       left = 0 
       right = args[0] 
     elif len(args) == 2: 
       left = args[0] 
       right = args[1] 
     else: 
       print 'wrong number of params provided' 

     print 'left is {}'.format(left) 
     print 'right is {}'.format(right) 

だけ右に提供されたときに左右が設けられている場合、それはleft

my_func(1,2) 
left is 1 
right is 2 

の値として、左のparamを取るよ、デフォルトはデフォルト値に

my_func(3) 
left is 0 
right is 3 
を残しました
関連する問題