我在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不同,再次,没有这样的规则,例如"一个类,一个文件"):
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...