开发者社区 问答 正文

如何在一个变量内将所有打印语句从一个Python类分配给另一个类

我需要将Python类A的完整输出捕获到类B中的变量。如果我尝试在类B中打印变量,则它应显示类A的打印输出的完整内容。

我是Python编程的新手,并做了以下操作来捕获输出。在B类中,我做了以下事情:

import classA

printData = classA.invokeMethod()// this is main method in classA and generates huge print output

但是'printData'变量在打印时显示'None'。我不能修改A类以具有return语句。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 20:31:56 438 分享 版权
1 条回答
写回答
取消 提交回答
  • 考虑包含class classA()的classA.py:

    该类具有打印包装样式方法my_print(),该方法将传递给它的数据附加到名为my_list的python列表中,然后再将相同的数据发送至print()函数。

    它还具有方法invokeMethod(),该方法生成要打印的数据并(在此解决方案中)附加到列表中。方法invokeMethod()将构造的列表(在这种情况下,返回3种不同类型的测试数据-列表,字符串,浮点数)返回给调用者:

    class classA():
    
        my_list = []
    
        def my_print(self, data_i_want_to_print):
            print('In classA:: data_i_want_to_print:', data_i_want_to_print)
            self.my_list.append(data_i_want_to_print)
    
        def invokeMethod(self):
            # test data item 1
            test_data = ['a','b','c']
            self.my_print(test_data)
    
            # test data item 2
            test_data = 'Hello, World!'
            self.my_print(test_data)
    
            # test data item 3
            test_data = 52.9
            self.my_print(test_data)
    
            print('In classA:: my_list:', self.my_list)
            return self.my_list
    

    现在考虑包含包含导入classA的class classB()的classB.py(与classA.py在同一目录中):

    当main实例化一个classB()实例时,classB()实例化一个classA()实例,该实例公开了classA()。invokeMethod()。当被调用时,该方法将内置于classA()的类列表变量(在classA()中称为my_list)返回给classB()类变量data_list。

    返回Main的class实例的对象,该实例公开classB()。get_data()。调用该方法后,会将classB()类变量data_list返回给main。

    这演示了将所有打印语句从一个Python类分配到变量内的另一个类的方法。

    根据要求,它确实将Python类A->的完整输出捕获到类B中的变量。

    要明确的是,如果使用my_print()方法将打印内容包装在classA()中,则可以访问classB()中的完整数据集。

    包括一些健康的印刷陈述,以帮助叙述:

    from classA import \*        
    class classB():
    
        data_list = []
    
        def __init__(self):
            classA_instance = classA()
            self.data_list = classA_instance.invokeMethod()
            print('In classB:: data_list:',self.data_list)
    
        def get_data(self):
            return self.data_list
    
    classB_instance = classB()
    data_list2 = classB_instance.get_data()
    print('In main:: data_list2:',data_list2)
    

    回答来源:stackoverflow

    2020-03-24 20:32:04
    赞同 展开评论