2013-05-17 191 views
0

我的問題如下:我有一個類Taskpane與幾個方法。實例化按其應有的方式工作。現在,當我顯示所有實例化對象的列表時,我想打印出每個對象的成員變量,例如_tp_nr。Python類實例返回值

以下代碼返回正確的值,但它以奇怪的(?)格式返回。

這是代碼:

#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()) 

結果:

('0',) 
('1',) 

('Title0',) 
('Title1',) 

的問題是:爲什麼 它返回在這種格式的結果嗎?我希望只看到:

'0' 
'1' 

('Title0') 
('Title1') 

使用:

for instance in Taskpane._instances: 
    print(instance._tp_nr) 

的結果是一樣的。

+1

你只有一些語法問題,所以你的回答不會幫助別人(因此我downvote)。 – Alfe

+0

@Alfe除了知道這可能是一個問題... – glglgl

+0

是的,但是在任何情況下都是隨機發現。如果標題像「爲什麼不用這些尾隨逗號工作」,一切都會好起來的。 – Alfe

回答

0

刪除尾部逗號,將值轉換爲元組。

+0

謝謝你的幫助。看起來像一個經典的錯誤。 –

1

在該串中的構造的末尾刪除逗號:

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

Python的對待,表達式作爲元組與一個元件

+1

這太可怕了。我的錯誤: - $謝謝。 –

2

您正在通過使用逗號創建的元組:

self._tp_id    = nr, 

逗號是什麼使得_tp_id成爲一個元組:

>>> 1, 
(1,) 
+0

謝謝你的幫助 –