【发布时间】:2013-08-05 00:55:24
【问题描述】:
我是 Python 新手,在涉及私有函数时遇到了一些问题。我想在公共方法中调用其中两个,只是为了使代码看起来更清晰,但我根本无法理解运行时错误显示的内容。以下是完整代码的问题部分:
def __loadVec(self,vec,res):
for i in range(0,res.getRows()):
for j in range(0,res.getColumns()):
vec.append(self.matrix[i][j])
return
def __savetoMatrix(self,vec,res):
index = 0
for i in range(0,res.getRows()):
for j in range(0,res.getColumns()):
self.matrix[i][j] = vec[index]
index += 1
return
def fmatrixSort(self,res):
try:
print "Sorting matrix information..."
vec = []
self._matrix.__loadVec(vec,res)
vec.sort()
self_matrix.__savetoMatrix(vec,res)
except TypeError:
print "TypeError in fmatrixSort"
return
我要做的是完全组织一个矩阵,使其以最低值开始并以最高值结束。
这是程序显示的错误:
Traceback (most recent call last):
File "MatrixClass.py", line 211, in <module>
main()
File "MatrixClass.py", line 203, in main
mat.fmatrixSort(res)
File "MatrixClass.py", line 154, in fmatrixSort
self._matrix.__loadVec(vec,res)
AttributeError: matrix instance has no attribute '_matrix'
我应该如何解决这个问题?
【问题讨论】:
-
不要在 Python 中使用 class-private
__identifiers。它们存在的原因与 Java/C++ 中的私有成员完全不同,并且不能替代它们。 -
你的代码被破解了,
self_matrix是什么;你的问题也不是因为__methods,而是缺少self._matrix属性!