【发布时间】:2012-10-22 16:56:23
【问题描述】:
我刚刚阅读了 Think Python 中关于 __init__ 类方法的说明。但是,我尝试启动我为 Project Euler.net 制作的 Prime Generator 函数,但仍然出现错误:
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 方法的好程序吗?
【问题讨论】:
-
__int__ classes是什么? (只定义__int__的类?) -
为什么你的代码中有一个类?
标签: windows class python-2.7 spyder