2

私は次のようなコードを持っています:

import random

def helper():
    c = random.choice([False, True]),
    d = 1 if (c == True) else random.choice([1, 2, 3])
    return c, d

class Cubic(object):
    global coefficients_bound

    def __init__(self, a = random.choice([False, True]), 
        b = random.choice([False, True]),
        (c, d) = helper()):
        ...
        ...

関数自体の定義に相互依存の引数を含めることができないため、helper() 関数が導入されました。Python は、d を計算しているときに c が見つからないと文句を言います。

デフォルトの引数を変更して、このクラスのオブジェクトを作成できるようにしたい:

x = Cubic(c = False)

しかし、私はこのエラーが発生します:

Traceback (most recent call last):
  File "cubic.py", line 41, in <module>
    x = Cubic(c = False)
TypeError: __init__() got an unexpected keyword argument 'c'

これは私が書いた方法で可能ですか?そうでない場合、どのようにすればよいですか?

4

1 に答える 1

6

簡単にどうですか:

class Cubic(object):
    def __init__(self, c=None, d=None):
        if c is None:
            c = random.choice([False, True])
        if d is None:
            d = 1 if c else random.choice([1, 2, 3])
        print c, d
于 2013-04-02T09:45:53.267 に答える