【问题标题】:Problems Appear in Visual Studio CodeVisual Studio Code 中出现问题
【发布时间】:2020-07-24 02:14:10
【问题描述】:

我是编码初学者,目前在我的大学上 Python 课程。我在 Visual Studio Code 的“问题”选项卡中弹出了一些问题。它希望我在类中的函数中放置一个 self 参数,但是当我在另一个文件中调用该类时,代码可以正常工作,它只会显示问题。我尝试将 self 放入类代码中,然后一切都停止工作。该代码是在讲座期间复制的,与我的教授使用相同编码平台的代码相同,但他的代码没有显示问题。我附上 2 个屏幕截图,因为代码来自 2 个不同的文件。我猜我的设置中的某些东西导致了这种情况发生。当我做类似的事情时,我也会发生类似的事情。for i in something: 它会告诉我我尚未定义,但代码将起作用。 Screenshot 1 Screenshot 2

【问题讨论】:

  • 如果这与您的教授的代码相同,他/她需要学习 Python 编程课程。 Math_functions 类有什么用?你不是在编程 Java 或 C#。

标签: python python-3.x visual-studio-code


【解决方案1】:

在具有非静态方法的类中,必须有一个自变量。

class Math_Functions:
    def addition(self, x, y): # there must be a self
        return x + y

    #... so on

这似乎是一个静态方法,但 VC 可能仍要求您提供自引用。因为python(在这种特定情况下)默认情况下不需要自我引用,所以当导入你的代码工作文件时,VC可能会告诉你那里需要一个额外的自我。在 y 参数之后,addition 中还有一个额外的逗号。

【讨论】:

    【解决方案2】:

    只需简单地将 self 传递给每个方法(数学函数),尽管没有它也可以工作,但如果您想继续学习 OOP,最好这样做。

    class mathFunctions:
        def add(self, x, y): #Avoids the problem in VS 
            return x + y
    

    使用init的类创建对象时,需要传入self才能工作,例如:

    class employee:
        def __init__(self, firstName, lastName, age):
            self.firstName = firstName
            self.lastName = lastName
            self.age = age
          
        def fullName(self):
            return self.firstName + ' ' + self.lastName
    #creating an object within the class
    John = employee('John', 'Smith', '26')
    #Returns "John Smith"
    print(John.fullName())
    
    
    

    希望这可能会有所帮助,祝你的 Python 课程好运!

    【讨论】:

      【解决方案3】:

      这是对两个回复的回复。将 self 放入代码会产生不同的问题,并且代码不会运行,因为它告诉我“缺少 1 个必需的位置参数:'y'”

      【讨论】:

        【解决方案4】:

        三种解决方案:

        第一个:

        在 settings.json 文件中添加这个配置:

        "python.linting.pylintArgs": [
            "--disable=all",
            "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode",
            "--disable=no-self-argument"
          ],
        

        第一个和第二个设置是pylint的默认设置,第三个可以抑制警告。

        第二个:

        将您的代码更改为:

        主要:

        from calc import Math_functions as mf
        
        print("Welcom to Calculator!")
        
        x = int(input('Number: '))
        y = int(input('Number: '))
        op = input('Operation: ')
        
        f = mf(x, y)
        
        if op == '+':
            print(f.addition())
        elif op == '-':
            print(f.subtraction())
        elif op == '*':
            print(f.multiplication())
        elif op == '/':
            print(f.division())
        

        计算:

        class Math_functions:
            def __init__(self, x, y):
                self.x = x
                self.y = y
        
            def addition(self):
                return self.x+self.y
        
            def subtraction(self):
                return self.x-self.y
        
            def multiplication(self):
                return self.x*self.y
        
            def division(self):
                return self.x/self.y
        

        第三个:

        将您的代码更改为:

        主要:

        import calc as mf
        
        print("Welcom to Calculator!")
        
        x = int(input('Number: '))
        y = int(input('Number: '))
        op = input('Operation: ')
        
        
        if op == '+':
            print(mf.addition(x, y))
        elif op == '-':
            print(mf.subtraction(x, y))
        elif op == '*':
            print(mf.multiplication(x, y))
        elif op == '/':
            print(mf.division(x, y))
        

        计算:

        def addition(x, y):
            return x+y
        
        
        def subtraction(x, y):
            return x-y
        
        
        def multiplication(x, y):
            return x*y
        
        
        def division(x, y):
            return x/y
        

        【讨论】:

        • 我在哪里输入 settings.json 文件中的内容?我对编程很陌生,因此不知道这些事情。我需要一步一步的指导。我最近在导入 tkinter 时遇到了类似的代码问题,我遇到了大约 100 个问题。
        • 是的,第一个解决方案是在 settings.json 中进行更改。其他人正在更改代码。
        猜你喜欢
        • 2019-01-19
        • 2020-03-29
        • 2022-01-07
        • 1970-01-01
        • 2021-11-14
        • 2018-01-22
        • 2020-07-03
        • 1970-01-01
        • 2019-05-05
        相关资源
        最近更新 更多