Мне также нужно указать значения по умолчанию для параметров нового экземпляра.
Вот пример, иллюстрирующий проблему:
Код: Выделить всё
class Feature:
def __init__(self,
title='DefaultTitle',
number=-1):
self.title=title
self.number=number
def addOrUpdateFeature(
existingFeature=None,
title='NewTitle',
number=0):
if existingFeature:
existingFeature.title=title
existingFeature.number=number
return True
else:
return Feature(title=title,number=number)
# part 1: create a new feature with title='featureA' and number=1
a=addOrUpdateFeature(title='featureA',number=1)
print(f'part 1: title={a.title} number={a.number}')
# part 2: modify that feature's number, but leave its title as-is
# ** the problem: with this code, title is overwritten as well
addOrUpdateFeature(existingFeature=a,number=2)
print(f'part 2: title={a.title} number={a.number}')
Код: Выделить всё
PS C:\Users\caver\Documents\GitHub> python argsTest.py
part 1: title=featureA number=1
part 2: title=NewTitle number=2
Подробнее здесь: https://stackoverflow.com/questions/798 ... e-others-a
Мобильная версия