我刚刚阅读了、Think、关于类的__init__方法的解释。但是,我试图启动我为Project Euler.net创建的素生成器函数,并继续得到错误:
Traceback (most recent call last):
File "C:\Users\-------\Desktop\Primes.py", line 54, in <module>
Primes.__main__()
TypeError: unbound method __main__() must be called with Primes instance as first argument (got nothing instead)我把它放在一个控制台里,然后通过调用这个命令,终于让它开始工作了:
primes = Primes()
primes.primegenerator(some number)然后它正常运行。如何让这种行为在__init__方法中工作?
以下是完整的代码:
class Primes():
def __init__(self, primes = []):
self.primes = primes
def primegenerator(self,limit):
'Generates primes to a given limit'
primes = [3]
i = 3 # i is the counter
while len(primes) < limit - 1:
for prime in primes:
if i % prime == 0:
i += 2
break
elif prime != primes[-1]:
continue
else:
primes.append(i)
i += 2
break
primes.insert(0,2)
return primes
def main(self):
limit = input('Enter a limit please: ')
primes = Primes.primegenerator(limit)
print '-------------------------' * 2
print The answer is: %d' %primes[-1]
print 'The sum of the primes is: %d' %sum(primes)
print print '-------------------------' * 2 这是否是一个很好的程序来添加一个init方法?
发布于 2012-11-02 07:23:47
错误在Primes.__main__()中-您需要传递一个像Primes.__main__(self)或Primes.__main__(primes)这样的实例。
但是要想得到完整的答案,你必须给出完整的代码。
这不是个好主意
Primes = Primes()
在该语句之前,Primes是一个类(或者可能是一个函数),之后它是一个实例。最好说
primes = Primes()
https://stackoverflow.com/questions/13188348
复制相似问题