类中的Python变量以某种方式获得modifid?
我不太了解python的继承方法。我有一个这样的类,它处理一个特殊的矩阵类中的Python变量以某种方式获得modifid?,python,class,Python,Class,我不太了解python的继承方法。我有一个这样的类,它处理一个特殊的矩阵 class PSSM: matrix = {} matrixfile = "" def __init__(self,matrixfile): self.matrixfile = matrixfile PSSM.matrix = {} PSSM.matrixfile = matrixfile try: f =
class PSSM:
matrix = {}
matrixfile = ""
def __init__(self,matrixfile):
self.matrixfile = matrixfile
PSSM.matrix = {}
PSSM.matrixfile = matrixfile
try:
f = open("%s" %matrixfile,"r")
for i in f:
PSSM.matrix[i.split()[0]] = []
for j in i.split():
try:
PSSM.matrix[i.split()[0]].append(float(j))
except ValueError:
continue
f.close()
except IOError:
try:
for i in StringIO(matrixfile):
PSSM.matrix[i.split()[0]] = []
for j in i.split():
try:
PSSM.matrix[i.split()[0]].append(float(j))
except ValueError:
continue
except ValueError:
return
def normalize(self):
newmatrix = self.matrix
for i in range(len(newmatrix["A"])):
suma = 0
for j in newmatrix.keys():
suma += newmatrix[j][i]
for j in newmatrix.keys():
newmatrix[j][i] = newmatrix[j][i]/suma
results = ""
for i in newmatrix.keys():
results += i
for j in newmatrix[i]:
results += "\t% 6.2f" %j
results += "\n"
return results
该程序运行良好,但当我尝试打印和测试它时,我遇到了一些意想不到的结果
我还有一个printmatrix对象,它打印矩阵并将其添加到字符串中,然后返回字符串
#returns the matrix I used as input
print PSSM.printmatrix(a)
# returns the normalized matrix as expected
print PSSM.normalize(a)
但如果我跑
print PSSM.printmatrix(a)
它再次返回标准化矩阵
不知何故,类中的矩阵变量继承了newmatrix变量
如果我没有在任何地方更改矩阵变量,它怎么可能发生变化
我只是复制了它的值,只修改了newmatrix变量
class PSSM:
matrix = {}
matrixfile = ""
Matrix和matrixfile不绑定到实例,而是绑定到类本身。所以该类的所有实例都共享它。
将这些移动到_init__函数:
def __init__(self,matrixfile):
self.matrix = {}
self.matrixfile = matrixfile
PSSM.matrix也是如此,将其更改为self.matrix
使用OO时,您还应该创建一个PSSM实例并使用它
myMatrixFile = "bla"
myPssm = PSSM(myMatrixFile)
print myPssm.printmatrix() #returns the matrix I used as input
print myPssm.normalize() # returns the normalized matrix as expected
我更改了matrix={}的位置,但问题仍然存在。a=PSSMlocationofmatrix打印PSSM.printmatrixa,打印PSSM.normalizea,打印PSSM.printmatrixa,第二次打印仍打印原稿的归一化替代品