2015-10-19 38 views
2

我想在我的類Point中有一個函數指針。作爲Python中的函數指針的類字段

class Point: 
    coord=[] 

    def value(self,p_coord:list=coord): 
    return abs(self.val(p_coord)) 

    def __init__(self,p_coord:list,p_val): 
    self.coord=p_coord 
    self.val=p_val 

我想一個函數指針傳遞到外地「VAL」,但是當我嘗試調用該方法值()的函數,它返回0:

def length(par:list): 
    return len(par) 

v1=Point([1, 2, 3],length) 
print(v1.value()) 

如何將函數傳遞給類字段?

回答

2

value的默認值coord是從線2類屬性這是不一樣的實例屬性在__init__self.coord集。所以函數指針正常工作,它只是看着錯誤的列表。

什麼可以代替做的是:

def value(self, p_coord=None): 
    if not p_coord: 
     p_coord = self.coord 
    return abs(self.val(p_coord))