从对象列表中获取价值

时间:2013-11-21 07:40:45

标签: python list oop

我尝试编写一个程序,它将在给定的X和Y范围内生成所有可能的位置组合。例如:[A1,A2,A3,B1,...] 由于我是OOP的新手,我在打印这些值时遇到了一些问题。以下是我的代码:

X = ['A','B','C']  
Y = ['1','2','3']

class Combination:
    def __init__(self,x,y):
        if (x in X) and (y in Y):
            self.x = x
            self.y = y
        else:
            print "WRONG!!"

    def __str__ (self):
        return x+y

class Position:
    def __init__(self):
        self.xy = []
        for i in X:
            for j in Y:
                self.xy.append(Combination(i,j))
    def __str__(self):
        return "List contains: " + str(self.xy)

P1 = Position()
print P1

我的结果是:

List contains: [<__main__.Combination object>, <__main__.Combination object>,....

正如我所提到的,我希望看到类似的东西: [A1,A2,A3,B1,...] 如果我换线:

 self.xy.append(Combination(i,j))

到:

 self.xy.append(i,j)

它工作正常,但我想在那里使用类组合。

有谁知道怎么做?这有什么不对?

2 个答案:

答案 0 :(得分:3)

Combinations课程中,您需要定义__repr__方法,而不是__str__这样的方法

def __repr__ (self):
    return self.x+self.y

通过此更改,输出为

List contains: [A1, A2, A3, B1, B2, B3, C1, C2, C3]

答案 1 :(得分:0)

您的组合__str__方法需要改进。首先,我怀疑它应该是__repr__,其次需要self.x + self.y