|
python :2.7
操作系统:win7
问题描述:
有一个class类,其中包含一个递归函数,递归函数中有一个参数,我将其放在__init__()中初始化,但是在调用的时候会报错class对象中没有这个属性;
下面是一个实例,是我截取的一段,无法运行,但是可以看出我所描述的问题;
- class A:
- def __int__(self):
- self.pathlist = []
- def get_path(self, numb):
- next_elements = self.page.xpath(start_path)
- tlist = self.parse_elements(next_elements)
- next_path = self.assembly_path(start_path, tlist)
- for pa in next_path:
- self.pathlist.append(pa)
- self.get_path(self.page, pa)
- return self.pathlist
- for i in range(3):
- page = 'a string !'
- t = A()
- pathlsit = t.get_path(page)
- print(pathlsit)
复制代码
没办法,我又想了一个其他的方法,在class类变量中初始化递归函数需要的参数,但是在一个循环中调用这个类的时候,发现class类变量是全局变量,每次循环调用这个类的时候,全局变量就会发生变化
如下所示的全局变量pathlist每次经过循环后都会发生改变,而不是原来的pathlist = [],这个原因我也知道是因为它是全局变量
- class A:
- pathlist = []
- def get_path(self, numb):
- next_elements = self.page.xpath(start_path)
- tlist = self.parse_elements(next_elements)
- next_path = self.assembly_path(start_path, tlist)
- for pa in next_path:
- A.pathlist.append(pa)
- self.get_path(self.page, pa)
- return A.pathlist
- for i in range(3):
- page = 'a string !'
- t = A()
- pathlsit = t.get_path(page)
- print(pathlsit)
- <span style="line-height: 1.5; background-color: rgb(255, 255, 255);">
- </span>
复制代码
|
|