Python类返回TypeError:'list'对象不可调用

时间:2018-02-20 17:41:54

标签: python class

我有一个班级:

class mountain:
  def __init__(self,pk_positions,chann_1,chann_2): 
    self.pk_positions = pk_positions
    self.chann_1 = chann_1
    self.chann_2 = chann_2
  def chann_1_pk(self):
    return(list(self.chann_1[i] for i in self.pk_positions))
  def chann_2_pk(self):
    return(list(self.chann_2[i] for i in self.pk_positions))
  def vall_positions(self):
    return(list(int((i+j)/2) for i,j in zip(self.pk_positions[:-1],self.pk_positions[1:])))
  def vall_sum(self):
    return(list(self.chann_1[i]+self.chann_2[i] for i in self.vall_positions()))

如果我在主脚本中打电话:

peaks = mountain(pk_positions,chann_1,chann_2)
pk1 = peaks.chann_1_pk()   # ==> without error 
pk2 = peaks.vall_positions() # ==> TypeError: 'list' object is not callable
pk3 = peaks.vall_sum()  # == > TypeError: 'list' object is not callable

为什么pk1没有错误但是pk2和pk的错误呢? 我做了一些stackoverflow搜索,但我不认为问题是defs和列表的命名。谢谢。

1 个答案:

答案 0 :(得分:0)

这会有用吗?

list(int((i[0]+i[1])/2) for i in zip(self.pk_positions[:-1],self.pk_positions[1:]))

你的拉链正在返回类似[(0,1),(1,2),(2,3),(3,4)]

的内容

你的for循环是拉链的第一个元素(0,1) 而int正在添加列表的两个值。 (0 + 1)/ 2