code: def test_module_properties(self):
      class ModuleWithProperties(torch.nn.Module):
          __jit_unused_properties__ = ["ignored_attr"]
  
          def __init__(self, a: int):
              super().__init__()
              self.a = a
  
          def forward(self, a: int, b: int):
              self.attr = a + b
              return self.attr
  
          @property
          def attr(self):
              return self.a
  
          @property
          def ignored_attr(self):
              return sum([self.a])
  
          @torch.jit.unused
          @property
          def ignored_attr_2(self):
              return sum([self.a])
  
          @ignored_attr_2.setter
          def ignored_attr_2(self, value):
              self.a = sum([self.a])
  
          @attr.setter
          def attr(self, a: int):
              if a > 0:
                  self.a = a
              else:
                  self.a = 0
  
      class ModuleWithNoSetter(torch.nn.Module):
          def __init__(self, a: int):
              super().__init__()
              self.a = a
  
          def forward(self, a: int, b: int):
              self.attr + a + b
  
          @property
          def attr(self):
              return self.a + 1
  
      self.checkModule(
          ModuleWithProperties(5),
          (
              5,
              6,
          ),
      )
      self.checkModule(
          ModuleWithProperties(5),
          (
              -5,
              -6,
          ),
      )
      self.checkModule(
          ModuleWithNoSetter(5),
          (
              5,
              6,
          ),
      )
      self.checkModule(
          ModuleWithNoSetter(5),
          (
              -5,
              -6,
          ),
      )
  
      mod = ModuleWithProperties(3)
      scripted_mod = torch.jit.script(mod)
  
      with self.assertRaisesRegex(AttributeError, "has no attribute"):
          scripted_mod.ignored_attr
  
imports: import os
  import sys
  from typing import Any, List, Tuple
  from collections import OrderedDict
  import torch
  import torch.nn
  from torch.testing._internal.jit_utils import JitTestCase
label_desc: Use image node_id 14 for calling the TestModuleContainers obj's underlying member method code with example usage: obj.test_module_properties() and returns: self, self, sum, sum, unknown