gpt4 book ai didi

python - python中的类和方法

转载 作者:行者123 更新时间:2023-11-28 21:03:02 25 4
gpt4 key购买 nike

import unittest
from paycheck import with_checker

class TestStrings(unittest.TestCase):
@with_checker([int])
def test_sort(self, list_of_ints):
self.assertTrue(isinstance(list_of_ints, list))
self.assertTrue(len(list_of_ints) == len(qsort(list_of_ints)))
self.assertTrue(False)


if __name__ == '__main__':
unittest.main()

def qsort (list):
if list == []:
return []
else:
pivot = list [0]
lesser = qsort([x for x in list[1:] if x<pivot])
greater = qsort([x for x in list[1:] if x>=pivot])
return lesser + [pivot] + greater

这给了我 global name qsort not defined(即使我在同一个类中有它)。这里有什么问题?我想这很简单,但我对 Python 还不是很熟悉。

最佳答案

看起来您在定义函数之前正在运行测试。 Python 中的函数定义是可执行语句,与其他任何语句一样,并按照它们遇到的顺序执行。由于您在定义 qsort 之前调用了 unittest.main(),因此在运行测试时未定义 qsort。将 unittest.main() 调用移到 def qsort block 之后。

当你这样做时,最好不要将 def 放在 if __name__=="__main__" block 中。通常 if block 将是程序中的最后一位。就这样

def qsort (list):
if list == []:
return []
else:
pivot = list [0]
lesser = qsort([x for x in list[1:] if x<pivot])
greater = qsort([x for x in list[1:] if x>=pivot])
return lesser + [pivot] + greater

if __name__ == '__main__':
unittest.main()

另请注意,qsort 与任何事物都不“属于同一类”。它不属于任何类别。这只是一个函数。

关于python - python中的类和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11220846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com