2012-11-02 4 views
0

나는 방금 에서 설명을 읽었습니다. 파이썬__init__ 클래스에 대해 생각하십시오. 그러나, 나는 내가 프로젝트 Euler.net 위해 만든 국무 발전기 기능을 시작하기 위해 노력하고 나는 오류 얻을 계속 : 나는 콘솔을 뽑아파이썬 2.7 객체 지향 __init__ 메소드

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 

이도 좋은 프로그램에 초기화 방법을 추가하는 것입니다

: 여기

전체 코드?

+0

라고? (그냥'__int__'을 정의한 클래스입니까?) –

+0

그리고 정확히 코드에 클래스가 있습니까? – Kos

답변

1

오류는 Primes.__main__()에 - 당신은 Primes.__main__(self) 또는 Primes.__main__(primes)

같은 인스턴스를 전달해야하지만 전체 답변을 당신은 전체 코드를 표시해야합니다.

그 문 앞에

Primes = Primes()

을 할 수있는 좋은 생각이 아니다는 소수 클래스 (또는 어쩌면 기능), 나중에는 인스턴스입니다. 더 나은는`__int__ classes` 무엇

primes = Primes()

+0

사과드립니다. 내 질문에 잘못 입력했습니다. 나는 그것을 지금 추가했고, 또한 전체 코드로 더 간결하게 추가했다. 내 문제는 클래스의 초기화 이해입니다. – Timidger