我尝试编写一个程序,它将在给定的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)
它工作正常,但我想在那里使用类组合。
有谁知道怎么做?这有什么不对?
答案 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