У меня есть функция класса, которая принимает на практике 4 аргумента, все переменные-члены класса. Обычно только один из этих аргументов изменяется за раз, а оставшееся время по умолчанию (текущие значения переменных-членов класса) передаются в функцию/выписываются, даже если они не меняются.Установить переменную экземпляра в качестве параметра по умолчанию для функции класса
Я думал, что лучше всего использовать эти переменные-члены класса по умолчанию, но мне сложно получить лучший синтаксис. Следующий код создает поведение, которое я желаю - используя переменную-член класса как параметр по умолчанию для функции. Но это некрасиво:
class test:
def __init__(self, a, b):
self.a = a
self.b = b
def testfunc(self, param = None):
if not param:
param = self.a
print(param)
if __name__ == '__main__':
a1 = test(1, 3)
a1.testfunc()
a2 = test(5, 5)
a2.testfunc()
#(prints 1 and 5 when called)
Я хотел бы использовать следующее:
def testfunc(self, param = self.a):
print(param)
Но это дает ошибку:
NameError: name 'self' is not defined
Что лучший способ сделать это?
лучший способ сделать это * это * 'парам = None' затем' если параметр является None: '(обратите внимание на тестирование * identity * not * равенство *)' param = self.a' Почему вы думаете, что это * «уродливый» *? – jonrsharpe
Это действительно лучшее, что вы можете сделать. По умолчанию такие параметры, как 'param = []', относятся к одной и той же проблеме. – Lynn
@ Маурис благодарит вас за быстрое подтверждение. – sunny