MCPcopy Create free account
hub / github.com/Oneflow-Inc/oneflow / __setattr__

Method __setattr__

python/oneflow/nn/modules/module.py:437–500  ·  view source on GitHub ↗
(self, name: str, value: Union[Tensor, "Module"])

Source from the content-addressed store, hash-verified

435 )
436
437 def __setattr__(self, name: str, value: Union[Tensor, "Module"]) -> None:
438 def remove_from(*dicts_or_sets):
439 for d in dicts_or_sets:
440 if name in d:
441 if isinstance(d, dict):
442 del d[name]
443 else:
444 d.discard(name)
445
446 params = self.__dict__.get("_parameters")
447 if isinstance(value, Parameter):
448 if params is None:
449 raise AttributeError(
450 "cannot assign parameters before Module.__init__() call"
451 )
452 remove_from(
453 self.__dict__,
454 self._buffers,
455 self._modules,
456 self._non_persistent_buffers_set,
457 )
458 self.register_parameter(name, value)
459 elif params is not None and name in params:
460 if value is not None:
461 raise TypeError(
462 "cannot assign '{}' as parameter '{}' (nn.Parameter or None expected)".format(
463 type(value), name
464 )
465 )
466 self.register_parameter(name, value)
467 else:
468 modules = self.__dict__.get("_modules")
469 if isinstance(value, Module):
470 if modules is None:
471 raise AttributeError(
472 "cannot assign module before Module.__init__() call"
473 )
474 remove_from(
475 self.__dict__,
476 self._parameters,
477 self._buffers,
478 self._non_persistent_buffers_set,
479 )
480 modules[name] = value
481 elif modules is not None and name in modules:
482 if value is not None:
483 raise TypeError(
484 "cannot assign '{}' as child module '{}' (nn.Module or None expected)".format(
485 type(value), name
486 )
487 )
488 modules[name] = value
489 else:
490 buffers = self.__dict__.get("_buffers")
491 if buffers is not None and name in buffers:
492 if value is not None and (not isinstance(value, Tensor)):
493 raise TypeError(
494 "cannot assign '{}' as buffer '{}' (Tensor or None expected)".format(

Callers 1

__init__Method · 0.45

Calls 4

register_parameterMethod · 0.95
typeEnum · 0.85
getMethod · 0.45
formatMethod · 0.45

Tested by

no test coverage detected