python,模块对象不可调用,在另一个文件中调用方法

我在java中有一个公平的背景,试图学习python。我遇到一个问题,当他们处于不同的文件时,了解如何从其他类访问方法。我不断得到模块对象是不可调用的。

我做了一个简单的功能,在一个文件中的列表中找到最大和最小的整数,并想要访问另一个文件中另一个类中的那些函数。

谢谢任何帮助。

class findTheRange():

    def findLargest(self, _list):
        candidate = _list[0]
        for i in _list:
            if i > candidate:
                candidate = i
        return candidate

    def findSmallest(self, _list):
        candidate = _list[0]
        for i in _list:
            if i < candidate:
                candidate = i
        return candidate
 import random
 import findTheRange

 class Driver():
      numberOne = random.randint(0, 100)
      numberTwo = random.randint(0,100)
      numberThree = random.randint(0,100)
      numberFour = random.randint(0,100)
      numberFive = random.randint(0,100)
      randomList = [numberOne, numberTwo, numberThree, numberFour, numberFive]
      operator = findTheRange()
      largestInList = findTheRange.findLargest(operator, randomList)
      smallestInList = findTheRange.findSmallest(operator, randomList)
      print(largestInList, 'is the largest number in the list', smallestInList, 'is the                smallest number in the list' )
最佳答案
问题出在进口行。你正在导入一个模块,而不是一个类。假设你的文件被命名为other_file.py(与java不同,没有一个“一个类,一个文件”的规则):

from other_file import findTheRange

如果你的文件被命名为findTheRange,按照java的方式,那么你应该写

from findTheRange import findTheRange

您也可以像随机一样导入它:

import findTheRange
operator = findTheRange.findTheRange()

其他一些意见:

a)@Daniel Roseman是对的。你根本不需要上课。 Python鼓励程序化编程(当然适用)

b)您可以直接构建列表:

  randomList = [random.randint(0, 100) for i in range(5)]

c)您可以使用与java中相同的方式调用方法:

largestInList = operator.findLargest(randomList)
smallestInList = operator.findSmallest(randomList)

d)可以使用内置的函数和巨大的python库:

largestInList = max(randomList)
smallestInList = min(randomList)

e)如果你还想使用一个类,而不需要self,可以使用@staticmethod:

class findTheRange():
    @staticmethod
    def findLargest(_list):
        #stuff...

转载注明原文:python,模块对象不可调用,在另一个文件中调用方法 - 代码日志