0

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メソッドを 追加するのに適したプログラムでしょうか?

4

1 に答える 1

1

エラーが発生しました-またはPrimes.__main__()のようなインスタンスを渡す必要があります Primes.__main__(self)Primes.__main__(primes)

ただし、完全な回答を得るには、完全なコードを表示する必要があります。

するのは得策ではない

Primes = Primes()

そのステートメントの前では、Primes はクラス (またはおそらく関数) であり、その後はインスタンスです。言ったほうがいい

primes = Primes()

于 2012-11-02T07:23:47.840 に答える