如何获得可迭代的类中的所有变量的列表?有点像locals(),但对于一个类
class Example(object):
    bool143 = True
    bool2 = True
    blah = False
    foo = True
    foobar2000 = False
    def as_list(self)
       ret = []
       for field in XXX:
           if getattr(self, field):
               ret.append(field)
       return ",".join(ret)
这应该回来了
>>> e = Example()
>>> e.as_list()
bool143, bool2, foo
我给出了一个在ipython/jupyter笔记本中抛出错误的示例,但作为单个脚本运行正常.
import unittest
class Samples(unittest.TestCase):
    def testToPow(self):
        pow3 = 3**3
        assert pow3==27
if __name__ == '__main__':
    unittest.main()
错误如下:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-7-232db94ae8b2> in <module>()
      8 
      9 if __name__ == '__main__':
---> 10     unittest.main()
/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.pyc in __init__(self, module, defaultTest, argv, testRunner, testLoader, exit, verbosity, failfast, catchbreak, buffer)
     92         self.testLoader = testLoader
     93         self.progName = os.path.basename(argv[0])
---> 94         self.parseArgs(argv)
     95         self.runTests()
     96 
/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.pyc in parseArgs(self, argv)
    147             else:
    148                 self.testNames = (self.defaultTest,)
--> 149             self.createTests()
    150         except getopt.error, …python python-2.7 ipython-notebook python-unittest jupyter-notebook
我有一个脚本可以执行各种操作并使用sys.argv访问参数,但是当脚本到达代码的unittest部分时,它说没有模块.我的脚本是:
class MyScript():
    def __init__(self):
        self.value = sys.argv[1]
    def hello(self):
        print self.value
    def suite(self):
        modules_to_test = ('external_sanity_onvif', 'starttest')
        alltests = unittest.TestSuite()
        for module in map(__import__, modules_to_test):
            alltests.addTest(unittest.findTestCases(module))
        return alltests
if __name__ == '__main__': 
    Run = MyScript()
    Run.hello()
    log_file = 'log_file.txt'
    test_file = open(log_file, "w") 
    runner = unittest.TextTestRunner(test_file)
    unittest.main(defaultTest='Run.suite', testRunner=runner)
假设我./script.py Hello在命令行中输入.我得到的错误是:
AttributeError: 'module' object has no attribute 'Hello'
如果我删除unittest模块,它的工作原理.此外,如果我删除testrunner日志并将其保留在:
unittest.main(defaultTest='Run.suite')
这仍然不起作用.
谁能帮忙.
谢谢
我试过这个黑客,但它仍然试图阅读sys.argv.
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
我已经尝试了这一点,argv但它仍然厌倦了阅读额外的参数.
我有
class Foo():
    function bar():
        pass
    function foobar():
        pass
而不是逐个执行每个功能,如下所示:
x = Foo()
x.bar()
x.foobar()
是否有一种内置的方法来循环并执行它们在类中编写的顺序中的每个函数?