This question already has answers here:
TypeError: worker() takes 0 positional arguments but 1 was given
(10 个回答)
2年前关闭。
我已经开始学习 Python。我创建了一个具有函数的类,在该函数中我有一个字典。不,我正在检查字典中是否存在键,在检查后我正在从函数返回一个值。
现在我正在尝试访问该函数,但是当我这样做时,我收到了一个错误
以下是我正在使用的代码:
如果您想使用
(10 个回答)
2年前关闭。
我已经开始学习 Python。我创建了一个具有函数的类,在该函数中我有一个字典。不,我正在检查字典中是否存在键,在检查后我正在从函数返回一个值。
现在我正在尝试访问该函数,但是当我这样做时,我收到了一个错误
"TypeError: first_func() takes 0 positional arguments but 1 was given"
以下是我正在使用的代码:
class myFirst:
def first_func():
flag=0
phonebook = {
"A" : 938477566,
"B" : 938377264,
"C" : 947662781
}
# testing code
if "A" in phonebook:
flag=1
if "D" not in phonebook:
flag = 0
return flag
myclassObj = myFirst()
status = myclassObj.first_func()
if status > 1:
print ("Pass")
else:
print ("fail")
最佳答案
方法(属于一个类的函数或过程)需要一个 self
参数,您可能熟悉其他语言中的 this
,(除非明确定义为 @staticmethod 但它看起来不像你在这里想要的)像所以:
class myFirst:
def first_func(self): # here
flag=0
phonebook = {
"A" : 938477566,
"B" : 938377264,
"C" : 947662781
}
# testing code
if "A" in phonebook:
flag=1
if "D" not in phonebook:
flag = 0
return flag
myclassObj = myFirst()
status = myclassObj.first_func()
if status > 1:
print ("Pass")
else:
print ("fail")
它应该与那个微小的变化一起工作。如果您想使用
@staticmethod
装饰器(以防该函数实际上不需要来自类实例的信息),您可以这样做:class myFirst:
@staticmethod #here
def first_func():
您可以通过查看此处的文档了解更多信息:https://docs.python.org/3/tutorial/classes.html关于python - 类型错误 : takes 0 positional arguments but 1 was given,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53269693/
10-12 23:32