我在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' )
问题出在import生产线上。您正在导入 模块 ,而不是类。假设您的文件已命名other_file.py(与Java不同,同样,不存在“一个类,一个文件”之类的规则):
import
other_file.py
from other_file import findTheRange
如果您的文件也被命名为findTheRange,在java的约定下,那么您应该编写
from findTheRange import findTheRange
您也可以像导入时一样导入它random:
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:
self
@staticmethod
class findTheRange(): @staticmethod def findLargest(_list): #stuff...