python类实例返回值

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,

逗号使_tp_id成为一个元组:

1
2
>>> 1,
(1,)


在构造函数中删除此字符串末尾的逗号:

1
2
self._tp_id             = nr,
self._tp_title          = title,

python将此类表达式视为具有一个元素的元组


删除将值转换为元组的尾随逗号。