Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:创建使用字典的类_Python_Class_Object_Dictionary - Fatal编程技术网

Python:创建使用字典的类

Python:创建使用字典的类,python,class,object,dictionary,Python,Class,Object,Dictionary,我正在创建一个做一些简单图论计算的类,我在代码的底部创建了一个字典,我想知道如何在类中使用字典 我想试试这样的东西 k = Graph(d.keys()) 但它不起作用,它给了我这个错误 TypeError: __init__() takes exactly 3 arguments (2 given) 有人有什么建议吗 class Graph: """docstring""" def __init__(self, node, degree): self.nod

我正在创建一个做一些简单图论计算的类,我在代码的底部创建了一个字典,我想知道如何在类中使用字典

我想试试这样的东西

k = Graph(d.keys())
但它不起作用,它给了我这个错误

TypeError: __init__() takes exactly 3 arguments (2 given)
有人有什么建议吗

class Graph:
    """docstring"""
    def __init__(self, node, degree):
        self.node = node
        self.degree = degree

    def Add(self):
        return sum(node)


if __name__ == '__main__':
    infile = raw_input("Enter File Name:  ")
    myfile = open(infile, 'r')
    d = {}
    with myfile as f:
        next(f)
        for line in f:
            k,v = line.split()
            d[int(k)] = int(v)
            next(f)

    k = d.keys()
    v = d.values()

您想使用
**
运算符将字典解包为关键字参数:

k = Graph(**d)

现在还不完全清楚你在这里做什么,但让我猜猜:

您定义了一个接受2个参数的构造函数(我们不计算self):

。。您使用1个参数调用了图构造函数:

k = Graph(d.keys())
我想你想要

k = Graph(k, v)

…但我们确实需要查看您在何处创建Graph对象。

是否要为每一行创建
Graph()
对象?当您将
d.keys()
传递给
Graph()
构造函数时,不清楚您预期会发生什么。读取文件时,该文件包含什么类型的数据?你需要给我们更多关于输入是什么以及你希望看到什么输出的细节。它不应该是
Add
方法中的
return sum(self.node)
吗?@MartijnPieters,我是编程新手,所以我不知道我在做什么,但我想要的是导入一长串键并将它们表示为“节点”。根据我的理解,如果我将列表“k”传递到“Graph()构造函数”,我可以使用它并在类中对其进行操作。TypeError:\uuu init\uuu()关键字必须是字符串这是我尝试时返回的结果,我有一个整数列表。你说你有一个字典,而不是列表。我很抱歉没有具体说明,但我想表示“k”作为节点,“v”作为度。数据类型是整数列表。
k = Graph(k, v)