У меня есть код следующим образом: Co-зависимые аргументы по умолчанию
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()):
...
...
функция
Помощника() вводятся как я не могу иметь созависимые аргументы в определении самой функции - Python жалуется, что не может найти c, когда он вычисляет d.
Я хочу, чтобы иметь возможность создать объект этого класса, как это так, изменяя значение параметра по умолчанию:
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'
Возможно ли это с тем, как я Это написано? Если нет, то каким образом я должен это делать?
Я сомневаюсь, что это работает, как вы думаете, что будет - по умолчанию аргумент вызывающий 'random.choice()' будет выбран, когда функция будет создана, и тогда же каждый время называется. [Этот вопрос объясняет, почему.] (Http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument). –
@ Lattyware спасибо за напоминание. Я прочитал это раньше, но я не думал об актуальности при использовании random.choice – nebffa