Calling static function via Non-static function

I have following code ::


module  top ;

  class  Proxy #( SIZE = 3 ) ;

    local static  string  name  = $sformatf("Proxy#(%0d)" , SIZE ) ;

    static  function  string  get_name() ;
          return  name ;
    endfunction

  endclass


  class   Main1 ; 

     typedef  Proxy #( 3 )   typename ;

     `ifdef STAT  static  `endif  function  string  get() ;
                     return  typename :: get_name() ;
                  endfunction

   endclass


   class  Main2 ;

       function  void  get() ;
           $display(" Non-static  get()  function  called  with  Null  handle ");
       endfunction

   endclass

   Main1  m1 ;

   Main2  m2 ;


   initial   begin
  
     m2.get() ;
     
     $display( "%0s" , m1.get()  ) ;

   end

endmodule


Without using +define+STAT I Observe Null reference error with m1.get()
With +define+STAT m1.get() returns string “Proxy#(3)”

How is it that m2.get() works fine whereas m1.get() doesn’t ?

**As  static  property  is  assigned  before  initial  block  starts ,  shouldn't  it  work ?**

In reply to Have_A_Doubt:

See Why is my code not failing when accessing non static method from not static class? | Verification Academy

In reply to dave_59:

Hi Dave ,
I referred to the link but I am still not clear .
As you commented ::
Accessing non-static members (see 8.9) or virtual methods (see 8.20) via a null object handle is illegal.

As I am accessing a static property via null handle , shouldn’t it work ?