You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:50:29