我通过python在一个文件中有一个类Neuron:
class Neuron:
def __init__():
......
def other function():
......
def __repr__(self, level=0):
gap = 't'*level
_printable = "{}position {} -- map dimensions {} -- input dataset {} element(s) -- level {} n".format(
gap,
self.position,
self.__weight_map[0].shape,
self.input_dataset.shape[0],
level
)
if self.child_map is not None:
for neuron in self.child_map.neurons.values():
_printable += neuron.__repr__(level+1)
return _printable
当我在其他文件中运行主函数时,它调用这个类并返回如下结果:
> position (0, 0) -- map dimensions (1, 1, 61) -- input dataset 219 element(s) -- level 0
> position (0, 0) -- map dimensions (2, 4, 61) -- input dataset 28 element(s) -- level 1
> position (0, 0) -- map dimensions (2, 4, 61) -- input dataset 0 element(s) -- level 2
> position (1, 0) -- map dimensions (2, 4, 61) -- input dataset 10 element(s) -- level 2
> position (0, 1) -- map dimensions (2, 4, 61) -- input dataset 4 element(s) -- level 2
> ...
现在我想计算结果中有多少行,也就是说,在我看来,代码使用这个__repr__
函数的次数。
我试着在__repr__
函数中添加一个var,比如cnt_num_times = 0
,cnt_num_times+=1,但它最终还是打印了很多1,那么如何更正呢?
使cnt_num_times
成为类内的类变量,在声明处或__init__
内将其初始化为0。
class Neuron:
cnt_num_times = 0
def __init__():
......
def __repr__(self, level=0):
Neuron.cnt_num_times += 1
你不需要在任何地方返回这个变量,你也可以在类外访问它,比如Neuron.cnt_num_times
。