Я создал класс, в котором хотел передать переменную self.variable в качестве необязательного аргумента в методе. Причина в том, что я хочу сохранить информацию в переменной Self.variable, созданной другим методом. Однако, если я использую метод, я хотел бы иметь возможность переопределить переменную self. с моей собственной информацией вручную.
К сожалению, это не разрешено, поэтому мне было интересно, почему бы и нет!? Кроме того, мне было интересно, знает ли кто-нибудь способ Pythonic для достижения той же цели?
Это пример того, что я пробовал:
# example:
class Example(Object)
def __init__(self):
self.variable = []
def fill_variable(self):
self.variable = [random.randint(1,10)] * 10
def use_variable(self, random_numbers = self.variable)
print(random)
test.Example()
test.fill_variable()
test.use_variable()
# or
test.use_variable(random_numbers=[1,2,3,4,5,6,7,8,9,10])
Я ожидал, что test.use_variable() напечатает 10 случайные числа
И это test.use_variable(random_numbers=[1,2,3,4,5,6,7,8,9,10]) будет
print(1,2,3,4,5,6,7,8,9,10)
Спасибо за любую помощь и объяснение!






К сожалению, это невозможно, вместо этого вы можете использовать оператор if, проверяющий, что это одно и то же значение (None), если это так, присвойте его self.variable:
def use_variable(self, random_numbers = None):
if random_numbers == None:
random_numbers = self.variable
print(random_numbers)
Строки кода на уровне класса, которые включают строки def методов, выполняются во время импорта один раз. В настоящее время нет экземпляра класса, который мог бы быть self, и даже класс еще не завершен.
Другой момент заключается в том, что имя аргумента self существует внутри только для метода.
или вы можете просто сделать:
self.use_variable = lambda x=self.variable:print(x)внутри вашего__init__, таким образом, вы можете использовать его как необязательный аргумент