繁体   English   中英

在 Python class 中导入 function 得到 TypeError 参数的多个值

[英]Importing function in Python class got TypeError multiple values for argument

运行 Dummy.py 文件产生了错误:

TypeError: create_scene_tab() got multiple values for argument 'initial_data_filepath'

假人.py

class A:
    from dum2 import create_scene_tab

    def __init__(self):
        pass

    def create_DataCollectionPreview_tab(self, filepath: str):
        self.create_scene_tab(self, "Data Collection Preview",
                              initial_data_filepath=filepath)


a = A()
a.create_DataCollectionPreview_tab("a.txt")

dum2.py

def create_scene_tab(self, key, initial_data_filepath: str = ""):
    print(initial_data_filepath)

但是如果我在create_scene_tab()中添加一个额外的参数,它就会变成:

dum2.py

def create_scene_tab(self, another_arg, key, initial_data_filepath: str = ""):
    print(initial_data_filepath)

错误消失。 为什么?

请不要问我为什么要导入并按原样称呼它。 我只是在简化一个大程序(Python 3.6.8)。

当您在实例上调用方法时, self是隐式传递的,因此您不需要显式传递它。

self.create_scene_tab("Data Collection Preview",
                      initial_data_filepath=filepath)

这实际上是在做类似于

A.create_scene_tab(self, "Data Collection Preview",
                   initial_data_filepath=filepath)

因此,当您明确地将self作为参数传递时,您实际上是在做

A.create_scene_tab(self, self, "Data Collection Preview",
                   initial_data_filepath=filepath)

这就是为什么你观察到额外的论点似乎不知从何而来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM