Python class instance return value
我的问题是:我有一个带有两个方法的类任务窗格。实例化可以正常工作。现在,当我显示所有实例化对象的列表时,我想为每个对象打印一个成员变量,例如_tp_nr。
以下代码返回正确的值,但返回的是一个奇怪的(?)格式。
这是代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #import weakref class Taskpane(): '''Taskpane class to hold all catalog taskpanes ''' #'private' variables _tp_nr = '' _tp_title = '' _tp_component_name = '' #Static list for class instantiations _instances = [] #Constructor def __init__(self, nr, title, component_name): self._tp_nr = nr, self._tp_title = title, self._tp_component_name = component_name #self.__class__._instances.append(weakref.proxy(self)) self._instances.append(self) def __str__(self): return str( self._tp_nr ) def setTaskpaneId(self, value): self._tp_nr = value def getTaskpaneId(self): return str(self._tp_nr) def setTaskpaneTitle(self, value): self._tp_title = value def getTaskpaneTitle(self): return str(self._tp_title) def setTaskpaneComponentName(self, value): self._tp_component_name = value def getTaskpaneComponentName(self): return self._tp_component_name tp1 = Taskpane( '0', 'Title0', 'Component0' ) tp2 = Taskpane( '1', 'Title1', 'Component1' ) #print Taskpane._instances #print tp1 for instance in Taskpane._instances: print( instance.getTaskpaneId() ) for instance in Taskpane._instances: print( instance.getTaskpaneTitle() ) |
结果:
1 2 3 4 5 | ('0',) ('1',) ('Title0',) ('Title1',) |
问题是:为什么返回这种格式的结果?我只希望看到:
1 2 3 4 5 | '0' '1' ('Title0') ('Title1') |
使用时:
1 2 | for instance in Taskpane._instances: print( instance._tp_nr ) |
结果是一样的。
您正在使用逗号创建元组:
1 | self._tp_id = nr, |
逗号使
1 2 | >>> 1, (1,) |
在构造函数中删除此字符串末尾的逗号:
1 2 | self._tp_id = nr, self._tp_title = title, |
python将此类表达式视为具有一个元素的元组
删除将值转换为元组的尾随逗号。