Python类实例化报错:criticalPath()不接受参数问题求助
问题描述
我创建了名为criticalPath的类,将其导入其他文件并实例化时,持续抛出TypeError: criticalPath() takes no arguments错误,但其他类无此问题。我多次检查初始化方法与构造函数仍未定位问题,相关代码及错误信息如下:
问题类代码(critical.py)
import pandas as pd import numpy as np import csv from node import node from aon import aon class criticalPath: def __init__(self, address): X = pd.read_csv(address) # 筛选Level≥3的数据行 X.drop(X[X['Level'] < 3].index, inplace = True) # 删除"Responsible\n(RACI)"列 X.drop('Responsible\n(RACI)', axis = 1, inplace = True) Dict = {} i = 0 while i < len(X.iloc[:,0]): if not self.isfloat(X.iloc[i,3]): aloc = X.iloc[i,3].split(", ") Dict[X.iloc[i,1]] = aloc, X.iloc[i,4] else: Dict[X.iloc[i,1]] = [X.iloc[i,3]], X.iloc[i,4] i += 1 self.raon = aon(Dict) self.raon.wbs[0] = self.raon.root # 深度优先搜索所有路径 all_paths = self.DFS(0) # 计算各路径长度 pl = self.calcPaths(all_paths) self.max_len = max(pl[p] for p in pl) self.max_paths = [p for p in pl if pl[p] == self.max_len] def isfloat(self, num): try: float(num) return True except ValueError: return False def DFS(self, root, seen=None, path=None): if seen is None: seen = [] if path is None: path = [root] seen.append(root) paths = [] for t in self.raon.wbs[root].nextN: if t not in seen: t_path = path + [t] paths.append(tuple(t_path)) paths.extend(self.DFS(t, seen[:], t_path)) return paths def calcPaths(self, paths): path_len = {} for i in paths: pLength = 0 for j in i: pLength = pLength + self.raon.wbs[j].dur path_len[i] = pLength return path_len def displayAon(self): node = self.raon.wbs[0] queue = deque() queue.append(node) while queue: line = [] while queue: line.append(queue.pop()) for i in line: for n in i.nextN: queue.append(self.raon.wbs[n]) print(i.index, " ", end='') print("\n")
错误回溯
In [78]: run test2.py --------------------------------------------------------------------------- TypeError Traceback (most recent call last) ~\Desktop\MSproject\test2.py in <module> 1 from critical import criticalPath ----> 2 cp = criticalPath("WBS Sample.csv") 3 print (cp.max_len) 4 5 TypeError: criticalPath() takes no arguments
调用示例
from critical import criticalPath cp = criticalPath("WBS Sample.csv") print(cp.max_len)
注:该类所在文件名为critical.py,仅在跨文件导入时出现此问题,以下为无问题的参考类代码:
node类
class node: def __init__(self, index, depends, dur): self.index = index # 节点索引 self.depends = depends # 依赖节点 self.dur = dur # 持续时间 self.nextN = [] # 后续节点列表 def __repr__(self): return f'node(index={self.index}, depends={self.depends}, duration={self.dur}, next={self.nextN})'
aon类
from node import node import math class aon: def __init__(self, wbs): self.root = node(0, None, 0) # 根节点 # 将字典值转换为node对象 for x in wbs.keys(): wbs[x] = node(x, wbs[x][0], wbs[x][1]) # 构建节点间的后续关系 for x in wbs.keys(): if math.isnan(float(wbs[x].depends[0])): self.root.nextN.append(wbs[x].index) else: for i in wbs[x].depends: wbs[float(i)].nextN.append(wbs[x].index) self.wbs = wbs
内容的提问来源于stack exchange,提问作者jay Almaatouk
相关产品推荐
相关产品推荐

