code: def test_default(self) -> None:
      class Foo(HasProps):
          y = bcpd.NumberSpec(default=12)
  
      f = Foo()
      assert f.y == 12
      assert Foo.__dict__["y"].get_value(f) == Value(12)
      f.y = "y1"
      assert f.y == "y1"
      # Once we set a concrete value, the default is ignored, because it is unused
      f.y = 32
      assert f.y == 32
      assert Foo.__dict__["y"].get_value(f) == Value(32)
  
imports: from __future__ import annotations
  import pytest
  import datetime
  import warnings
  from copy import copy
  import numpy
  import pandas
  from bokeh.core.has_props import HasProps, Local
  from bokeh.core.property.vectorization import Field, Value, field, value
  from tests.support.util.api import verify_all
  import bokeh.core.property.dataspec
label_desc: Use image node_id 6 for calling the Test_NumberSpec obj's underlying member method code with example usage: obj.test_default() without return types