code: def copyData(self, source):
          
          for attr in self.copyAttributes:
              selfValue = getattr(self, attr)
              sourceValue = getattr(source, attr)
              if isinstance(selfValue, BaseObject):
                  selfValue.copyData(sourceValue)
              else:
                  setattr(self, attr, sourceValue)
docs: Subclasses may override this method.
          If so, they should call the super.