Python 错误:导入错误:无法导入名称';doSum';从';总和';(G:\firstpy\Sum.py)

Python 错误:导入错误:无法导入名称';doSum';从';总和';(G:\firstpy\Sum.py),python,python-3.x,Python,Python 3.x,我在一个名为firstpy的文件夹中有两个python文件。但是,当我试图导入一个名为Sum的python文件函数时,它给出了前面提到的错误。这两个文件是: Sum.py: class Sum: def doSum(a,b): print(a+b) #class with methods class Sum: def class_method(self): print("dostuff") #only a method def doS

我在一个名为firstpy的文件夹中有两个python文件。但是,当我试图导入一个名为Sum的python文件函数时,它给出了前面提到的错误。这两个文件是:

Sum.py:

class Sum:
        def doSum(a,b):
        print(a+b)
#class with methods
class Sum:
    def class_method(self):
         print("dostuff")

#only a method
def doSum(a,b):
    print(a+b)
Calculator.py:

from Sum import doSum

class Calculator:

    doSum(4,5)
from Sum import Sum


class Calculator:
    def __init__(self):
        self.sum = Sum()

    def calculate(self, a, b):
        return self.sum.do_sum(a, b)

请告诉我错误是什么,解决方案对我不起作用。

您在类中定义了方法“Sum”类,因此必须导入该类,实例化它,然后才能使用该方法(从该类)

如果只想导入方法,则必须在类外声明它

Sum.py:

class Sum:
        def doSum(a,b):
        print(a+b)
#class with methods
class Sum:
    def class_method(self):
         print("dostuff")

#only a method
def doSum(a,b):
    print(a+b)

您在一个类中定义了方法“Sum”类,因此您必须导入该类,实例化它,然后才能使用该方法(从该类)

如果只想导入方法,则必须在类外声明它

Sum.py:

class Sum:
        def doSum(a,b):
        print(a+b)
#class with methods
class Sum:
    def class_method(self):
         print("dostuff")

#only a method
def doSum(a,b):
    print(a+b)

使用纯函数而不是类或将此函数设为静态:

总之,是的

def do_sum(a, b):
    #  your code
然后您可以这样导入它:
从Sum import do\u Sum
。 或者试试这个:

class Sum:
    @staticmethod
    def do_sum(a, b):
        #  your code
导入:
从Sum导入Sum
并调用:
Sum.do\u Sum(args)

如果仍要使用类,请在Calculator.py中:

from Sum import doSum

class Calculator:

    doSum(4,5)
from Sum import Sum


class Calculator:
    def __init__(self):
        self.sum = Sum()

    def calculate(self, a, b):
        return self.sum.do_sum(a, b)

顺便说一句,您不必像在Java中那样用大写字母命名模块。此外,还有另一种名称约定——不是驼峰式,而是蛇式(doSum->do_sum)

使用纯函数而不是类,或者将此函数设置为静态:

总之,是的

def do_sum(a, b):
    #  your code
然后您可以这样导入它:
从Sum import do\u Sum
。 或者试试这个:

class Sum:
    @staticmethod
    def do_sum(a, b):
        #  your code
导入:
从Sum导入Sum
并调用:
Sum.do\u Sum(args)

如果仍要使用类,请在Calculator.py中:

from Sum import doSum

class Calculator:

    doSum(4,5)
from Sum import Sum


class Calculator:
    def __init__(self):
        self.sum = Sum()

    def calculate(self, a, b):
        return self.sum.do_sum(a, b)

顺便说一句,您不必像在Java中那样用大写字母命名模块。此外,还有一些其他的名称约定-不是驼峰式,而是蛇式(doSum->do_sum)

为什么到处都在创建类?我只是在学习python,所以我尝试将一个模块导入另一个模块。这不是Java,你不必创建大量的类。当您导入Sum时,将导入名为
Sum.py
的文件。在一个类中定义的任何函数都不是从该类中单独导入的。那么如何导入该函数呢?你不能从一个类中导入函数。你为什么到处创建类?我只是在学习python,所以我尝试将一个模块导入另一个模块。这不是Java,你不必创建大量的类。当您导入Sum时,将导入名为
Sum.py
的文件。类中定义的任何函数都不是从该类中单独导入的。那么如何导入该函数呢?您不能从类中导入函数。我有您的实例化方法,但您能告诉我如何在类之外声明该方法吗?这不是一个缩进错误吗?关键是你不需要python中的类来拥有方法,看看编辑来查看示例代码我有你的实例化方法,但是你能告诉我如何在类之外声明方法吗?这不是一个缩进错误吗?关键是python中的类不需要有方法,请查看编辑以查看示例代码