小编典典

“模块”对象不可调用-另一个文件中的调用方法

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' )

阅读 132

收藏
2021-01-20

共1个答案

小编典典

问题出在import生产线上。您正在导入 模块
,而不是类。假设您的文件已命名other_file.py(与Java不同,同样,不存在“一个类,一个文件”之类的规则):

from other_file import findTheRange

如果您的文件也被命名为findTheRange,在java的约定下,那么您应该编写

from findTheRange import findTheRange

您也可以像导入时一样导入它random

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...
2021-01-20