Type error: __init__() missing 1 required positional argument: 'element'
代码是从Github上得到的。我想跑,但它不起作用。你能帮忙吗
from equation import Equation
from time import sleep
def run_balance():
"""
Runs the chemical equation balance algorithm
"""
print('=================================================')
print('Insert chemical equation with elements in\nparentheses followed by the number of atoms:')
print('Example: (H)2 + (O)2 = (H)2(O)1')
user_input = input('>>> ')
try:
equation = Equation(user_input)
print('Balanced equation: ' + equation.balance())
sleep(3)
run_balance()
except IndexError:
print('Invalid input...')
sleep(3)
run_balance()
run_balance()
1条答案
按热度按时间u5i3ibmn1#
看起来你缺少了
Equation
的一个参数。查看
Equation
的文档或源代码。如果您正在以交互方式运行Python,则可以键入help(Equation)
并查找__init__
来开始。下面是如何从收到的错误消息中推断出这一点:
TypeError: __init__() missing 1 required positional argument: 'element'
表示1.名为
__init__
的函数1.被“召唤”(执行),但
1.它得到的参数比它应该得到的少一(1)个(如果你看一下函数定义,它应该得到的参数被称为
element
,如果这有帮助的话)。例如,也许它应该用两个参数调用,但只得到了一个参数,或者应该用三个参数调用,但只得到了两个参数,等等。在正确的Python代码中,错误的参数数量 always 会导致具有该消息形状的
TypeError
,并且来自Python本身检查参数的数量。1.[这个细节在本例中无关紧要]“位置参数”意味着在函数的定义中,它不是一个只有关键字的参数。
在大多数情况下,这个错误会告诉你问题是什么,但是这个错误在两个方面是不好的:
我们必须知道
__init__
是一个特殊的函数名,Python类使用它来 * 初始化它们自己。这通常被称为“构造函数”,虽然in Python the applicability of that name is a bit trickier。一旦知道
__init__
是类的“构造函数”/初始化器,就可以开始查找代码中构造类的位置。这并不总是显而易见的,但我们有另一个线索来帮助:按照惯例,只有类被命名为
LikeThis
-每个单词的第一个字母大写,单词之间没有分隔。代码中唯一具有该名称的是Equation
。错误出现在 * 你的 * 代码中的可能性更高,而不是其他人已经测试和发布的代码,所以 * 很可能 *Equation(user_input)
调用需要多一个参数。很难得到比这更精确的信息,因为你没有分享足够的信息-你从哪里得到的
equation
模块?在GitHub上(link!)你得到这个代码了吗?这个错误是否有任何其他信息,比如行号或“回溯”(一串看起来像代码的行)?P.S.你写的是“Type error”而不是实际的标准名称
TypeError
,这警告我你可能会手动重写错误,但没有足够注意精确的细节。