0

私の問題は次のとおりです。いくつかのメソッドを持つクラス Taskpane があります。インスタンス化は正常に機能します。ここで、インスタンス化されたすべてのオブジェクトのリストを表示するときに、_tp_nr などのオブジェクトごとにメンバー変数を出力したいと考えています。

次のコードは正しい値を返しますが、奇妙な (?) 形式で返されます。

これはコードです:

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

結果は同じです。

4

3 に答える 3

2

コンマを使用してタプルを作成しています。

self._tp_id             = nr, 

コンマ_tp_idタプルを作るものです:

>>> 1,
(1,)
于 2013-05-17T10:01:06.080 に答える
1

コンストラクターでこの文字列の末尾にあるコンマを削除します。

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

Python は、このような式を 1 つの要素を持つタプルとして扱います

于 2013-05-17T10:01:01.523 に答える
0

値をタプルに変換している末尾のコンマを削除します。

于 2013-05-17T10:01:01.400 に答える