How to replace __str__ for a function

后端 未结 4 1162
萌比男神i
萌比男神i 2021-01-02 09:58

I want to change the string representation of a python function to be just the function name.

Eg for some function

def blah(x):
 ...
<
4条回答
  •  無奈伤痛
    2021-01-02 10:38

    class FNMagic:
         def __init__(self,fn,fn_name):
             self.fn = fn 
             self.fn_name = fn_name
         def __call__(self,*args,**kwargs):
             return self.fn(*args,**kwargs)
         def __str__(self):
             return self.fn_name
    
    
    def blah(x):
        return x
    
    blah = FNMagic(blah,"blah!")
    print blah
    

    you could make a simple decorator

    class NamedFn:
        def __init__(self,name):
           self.fn_name = name
        def __call__(self,fn):
            return FNMagic(fn,self.fn_name)
    
    @NamedFn("some_name!!!")
    def blah2(x,y):
         return x*y
    
    print blah2
    

提交回复
热议问题