在python中,我拥有的内容如下:
def func(self):
self.func2()
class myClass:
f = func
def func2():
...
然后我创建一个对象并调用成员函数:
C = myClass
C.f()
这不起作用,它说"myClass object has no attribute 'func2'"
..任何人都可以帮忙调试吗?
编辑: 看到几条建议和意见后,我决定发布原始代码:
def quickSort(self, A, start, end):
if start < end:
q = self.partition(A, start, end)
self.quickSort(A, start, q-1)
self.quickSort(A, q+1, end)
class SortingAlgo(object):
qsort = quickSort
def partition(self, A, start, end):
x = A[end]
i = start - 1
for j in range(start, end):
if (A[j] <= x):
i += 1
A[i], A[j] = A[j], A[i]
A[i+1], A[end]= A[end], A[i+1]
return i+1
A = [5, 1, 3, 2, 4, 7 , -4, 9843]
Sort = SortingAlgo()
这是一个简单的快速排序实现,我真的没有意义实现一个,我只是想尝试Python的类功能。上面的代码不起作用,错误信息是:
Traceback (most recent call last):
File "tmp.py", line 22, in <module>
Sort.qsort(A, 0, len(A)-1)
File "tmp.py", line 4, in quickSort
self.quickSort(A, start, q-1)
AttributeError: 'SortingAlgo' object has no attribute 'quickSort'
我不认为我错过了每个人都提到的任何事情。那么代码有什么问题呢?
答案 0 :(得分:1)
您正在呼叫self.quickSort()
,但课程中没有quickSort
。您已将该功能分配给qsort
,因此您需要拨打self.qsort()
。
答案 1 :(得分:0)
添加self
作为func2
的参数。调用myClass时添加()
。
def func(self):
self.func2()
class myClass:
f = func
def func2(self):
print 'func2'
C = myClass()
C.f()