代码之家  ›  专栏  ›  技术社区  ›  Saelyth

有时没有错。

  •  0
  • Saelyth  · 技术社区  · 6 年前

    我不明白为什么没有一个默认参数用相同的语法打印两个不同的东西。

    class LoaderForm(QtWidgets.QDialog, Ui_Dialog):
        def __init__(self, parent=None):
            print("Parent is: " + str(parent))
            self.button_Load.clicked.connect(self.load_project)
    
        def load_project(self, projectname=None):
            print("pojectname is: " + str(projectname))
    
    >>> Parent is: None
    >>> pojectname is: False
    

    为什么?我反复检查了代码几次,但找不到它的逻辑。值得一提的是,我注意到这个试图利用一个条件 projectname 里面 load_project 方法:

            if projectname is None:
                #do something
    

    当然不起作用,因为projectname显然毫无理由是假的。

    2 回复  |  直到 6 年前
        1
  •  2
  •   jpp    6 年前

    self.button_Load.clicked.connect(self.load_project)

    self.button_Load.clicked.connect self.load_project False None

    class MyClass():
        def __init__(self):
            self.connect(self.foo)
    
        def connect(self, func):
            func(False)
    
        def foo(self, var=None):
            print('Var is ' + str(var))
    
    A = MyClass()
    
    # Var is False
    
        2
  •  1
  •   Lazykiddy    6 年前

    clicked 有一个带有默认值的参数,例如 clicked=false 转发给 load_project 和覆盖 projectname=None