【发布时间】:2017-05-23 10:59:07
【问题描述】:
所以我有这门课:
#!/usr/bin/python3
class MyClass(object):
def __init__(self, length):
self._list = length
def get(self, index):
try:
return self._list[index]
except IndexError:
return None
它接受一个列表并返回一个值,我认为是一个列表索引。我正在尝试获得该值:
def my_function(a_list):
a_list = MyClass
for x in (10**p for p in range(1, 9)):
if a_list:
print(a_list)
def main():
length = my_function(MyClass([i for i in range(0, 543)]))
但我一直只获取列表的内存位置,我认为这应该返回一个 int。
我希望这是一段可行的代码,但我很苦恼,将“对象”传递给类的概念对我来说没有任何意义。
这是我应该使用的测试:
def test_large_list():
s_list = My_Class([i for i in xrange(0, 100000)])
assert len(s_list._list) == list_length(s_list)
好的,这是我的完整功能,它已经完成了,我如何做到这一点,以便第一行接受一个参数
#!/usr/bin/python3
#def list_length(single_method_list): This is what I am supposed to work with
from single_method_list import SingleMethodList
def my_function(): # This is how I have done it and it works.
a_list = MyClass([i for i in range(0, 234589)])
for x in (10**p for p in range(1, 8)):
if a_list.get(x):
print("More than", x)
first = x
else:
print("Less than", x)
last = x
break
answer = False
while not answer:
result = (first + last)/2
result = int(round(result))
print(result)
if s_list.get(result):
first = result
print('first', result)
else:
last = result
print('last', result)
if s_list.get(result) and not s_list.get(result + 1):
answer = True
print(result + 1)
my_function()
我不知道我还能提供什么来解释我卡在哪里了,这是 OOP 的一部分,我不知道我在这里需要相同的结果,只是将它传递给函数而不是创建它在我为执行算法而执行的函数内部。
【问题讨论】:
-
MyClass从未使用my_function中的列表进行初始化。另外,list_length是什么? -
抱歉,我复制粘贴了函数,忘记改名字了。这是我接受的一个测试,我现在正试图涵盖我无法做到的部分,我已经完成的实际测试,但由于我仍在努力解决其中的 OOP 部分,这就是我想要做的理解。我已将 list_length 更正为 my_function。 main() 中的位是我尝试使用 1 到 543 的任意列表发送初始化 MyClass。
标签: list python-3.x class object