2014-12-15 2 views
2

나는 프로그램을 작성하고 메소드에 생성자에서 변수를 가져 오려고하지만 어떻게해야할지 모르겠다. (sprawdzp.liczba과 오류가 발생한다. 여기에 사용자의 번호를 가지고. 같은 상황이 p.wielokrotnosc 함께. 나는이 프로그램을 쉽게 쓸 수 있다는 것을 알고 있지만 난 정말이가 있기 때문에 무슨 일이생성자에서 변수를 가져 오는 중

class Przyklad: 
     def __init__(self, liczba): 
      self.liczba = liczba 

     def podajSzukana(self): 
      self.wielokrotnosc = 3 

class Dane: 

     def wczytaj(self): 
      a = int(input('Podaj mi liczbę ')) 

      p = Przyklad(a) 

     def sprawdz(self): 
      if (p.liczba % p.wielokrotnosc == 0): 
       return true 

print ('Witaj w programie szukającym wielokrotność liczby 3 \n') 
d = Dane() 
d.wczytaj() 
d.sprawdz() 
+0

할당하고 검색하려면 'self.p'를 사용해야합니다. – jonrsharpe

답변

0

같은 간단한 예제로 OOP를 배우고 싶습니다 변수 liczbaPrzyklad 클래스에 포함되어 있으므로 Dane에서 액세스하려고하면 불가능합니다.

liczba은 전역 변수 (위험합니다)이거나 DanePrzyklad (이러한 이름은 ....이지만)의 자손이어야합니다.

1

Przyklad의 생성자에서 변수를 가져 오는 데 문제가 있습니다. 문제는 Dane에 저장하는 중입니다. 일반적인 절차는 Dane의 인스턴스에 연결하는 것입니다 : 지역 변수하지 Dane의 구성원은 다음

def wczytaj(self): 
     a = int(input('Podaj mi liczbę ')) 

     self.p = Przyklad(a) 

, 당신은 Dane

0

ap에서 사용할 수 self.p을해야합니다. 당신은 (jonrsharpe에 의해 지적) 클래스 컨텍스트에서이 변수에 액세스 할 수 self.을 사용해야합니다 :

class Dane: 

    def wczytaj(self): 
     a = int(input('Podaj mi liczbę ')) 

     self.p = Przyklad(a) 

    def sprawdz(self): 
     if (self.p.liczba % self.p.wielokrotnosc == 0): 
      return true 

또 다른 문제는 self.wielokrotnosc 할 것입니다 당신이 podajSzukana(self) 방법을 호출 할 때까지하지 존재한다. 이 문제를 해결하는 한 가지 방법은 생성자에서 해당 함수를 호출하는 것입니다.

class Przyklad: 
    def __init__(self, liczba): 
     self.liczba = liczba 
     self.podajSzukana()  // Call the method here. 

    def podajSzukana(self): 
     self.wielokrotnosc = 3 
관련 문제