python, module object is not callable, calling method in another file
Question: I have a fair background in java, trying to learn python. I'm running into a
problem understanding how to access methods from other classes when they're in
different files. I keep getting module object is not callable.

I made a simple function to find the largest and smallest integer in a list in
one file, and want to access those functions in another class in another file.

Any help is appreciated, thanks.

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


Answer: The problem is in the `import` line. you are importing a _module_ , not a
class. assuming your file is named `other_file.py` (unlike java, again, there
is no rule of "one class, one file"):

    
    
    from other_file import findTheRange
    

if your file is named findTheRange too, following java's convenions, then you
should write

    
    
    from findTheRange import findTheRange
    

you can also import it just like you did with `random`:

    
    
    import findTheRange
    operator = findTheRange.findTheRange()
    

* * *

Some other comments:

a) @Daniel Roseman is right. You do not need classes here at all. Python
encourages procedural programming (when it fits, of course)

b) You can build the list directly:

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

c) You can call methods in the same way you do in java:

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

d) You can use built in function, and the huge python library:

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

e) If you still want to use a class, and you don't need `self`, you can use
`@staticmethod`:

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

