Код, который вы даете, является правильным и безопасным, избегая «случайных» обязательных атрибутов, которые должны быть связаны , а не .Однако если вы предпочитаете автоматизацию, а не безопасность и правильность, вы могли бы использовать что-то вроде ...:
def blindcopy(objfrom, objto):
for n, v in inspect.getmembers(objfrom):
setattr(objto, n, v);
Однако я бы не рекомендовал это (по причинам, указанным в первомпункт ;-).OTOH, если вы знаете имена атрибутов, которые вы хотите скопировать, то все в порядке:
def copysome(objfrom, objto, names):
for n in names:
if hasattr(objfrom, n):
v = getattr(objfrom, n)
setattr(objto, n, v);
Если вы делаете такие вещи часто, имея этот код один раз вмодуль "утилиты" может быть для вас определенной победой!