我需要将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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
考虑包含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