поэтому у меня есть модель класса, а внутри модели у меня есть метод сохранения
def save(self):
args = list(map(self.getValueOrDefault,self.__fields__))
args.append(self.getValueOrDefault(self.__primary_key__))
logging.debug('saving %s' % str(args))
row = yield from execute(self.__insert__,args)
if row != 1:
logging.debug('failed to insert record: affected rows: %s' % row)
else:
logging.info('insertion was succesful')
вот код для getValueOrDefault, они в одном классе
def getValueOrDefault(self,key):
value = getattr(self,key)
if value is None:
field = self.__mapping__[key]
if field.default is not None:
value = field.default() if callable(field.default) else field.default
logging.info('using default value for %s ==> %s' % (key,value))
setattr(self,key,value)
return value
если я добавляю метод класса для сохранения и вызываю сохранение из экземпляра, я получаю сообщение об ошибке, говорящее, что getValueOrDefault требует дополнительного позиционного аргумента «ключ». Я предполагаю, что когда я вызываю его из экземпляра, self (который становится cls) является самим классом, а не созданным экземпляром, и я пытаюсь сделать Model.getValueOrDefault, но не должен ли он дать мне какую-то ошибку, которая говорит мне, что я могу не вызывать функцию без инициализации класса?