python - 类型错误 : takes 0 positional arguments but 1 was given

标签 python python-3.x

<分区>

我已经开始学习 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/

相关文章:

python - Mongo在聚合中替换字段中的多个子字符串

python - 如何使用 SQLAlchemy 声明性语法指定关系?

python - 如何根据先前的状态在 pandas 数据框中创建列?

python - 如何更改像按钮一样的跨度文本

python - Python 2.7 与 3.6 中 struct.unpack 的行为差异

python - Beautiful Soup 找不到这个 html

从不同文件导入类时,Python 3 是实例意外行为吗?

python - 如何从 python pandas 中的 json 文件中提取非嵌套列?

python - 词典使用问题

python - 替换文本文件中的单词并将其写入python中的新文件