2014-06-12 3 views
-2

저는 파이썬의 초보자입니다. 내 질문은 Python을 사용하여 프로젝트를 컴파일하는 동안, 사용자 입력 변수를 특성으로 만드는 방법입니다. 예를 들어파이썬 2.7 또는 3.2 (클래스 및 인스턴스)

: 여기

class supermarket: 
     num=int(input('enter a no.')) 
     def __init__(self,num): 
      self.ini='' 
     def odd_even(self,num): 
      if num%2==0: 
       self.ini='even' 
      else: 
       self.ini='odd' 

    #calling 
    pallavi=supermarket() 
    pallavi.(num) 

, num라는 어떤 속성이 없다는 오류를 보여주는 것.

어떻게해야합니까?

답변

0

현재 많은 문제가있다 :

  1. num = int(input(...))클래스 속성을 할당 -이 코드는 클래스를 정의 할 때 인스턴스가 생성 될 때 하지, 실행 및 속성이 모두에 의해 공유됩니다 클래스의 인스턴스;
  2. 두 번째 num 매개 변수를 __init__에 정의 했음에도 불구하고 인수를 전달하지 않고 pallavi = supermarket()을 호출합니다.
    1. 또한 num의 매개 변수는 odd_even입니다. 속성 인 경우 self을 통해 액세스하십시오. 및
  3. pallavi.(num) 올바른 파이썬 구문은 아니다 - 속성 액세스 구문은 object.attr이며, 괄호가 SyntaxError이다.

나는 당신이 원하는 것은 무엇인가 생각 :

class Supermarket(): # note PEP-8 naming 

    # no class attributes 

    def __init__(self, num): 
     self.num = num # assign instance attribute 
     self.ini = 'odd' if num % 2 else 'even' # don't need separate method 

    @classmethod # method of the class, rather than of an instance 
    def from_input(cls): 
     while True: 
      try: 
       num = int(input('Enter a no.: ')) # try to get an integer 
      except ValueError: 
       print("Please enter an integer.") # require valid input 
      else: 
       return cls(num) # create class from user input 

이 인스턴스의 실제 초기화에서 사용자 입력에 대한 요청을 분리하고, 같은 호출 할 것이다 :

>>> pallavi = Supermarket.from_input() 
Enter a no.: foo 
Please enter an integer. 
Enter a no.: 12 
>>> pallavi.num 
12 
>>> pallavi.ini 
'even' 

3.2 및 2.7을 언급하면서, 2.x를 사용할 때는 inputraw_input으로 대체해야합니다.

+0

@jonrsharpe .... 나는 그것을 얻고 똑같은 방법을 시도했다. .. 그러나 그것은 아직도 오류를 보여준다. .. 나는 다른 질문에 dat 코드를 넣고있다. 나에게 묻는다. .. 대답을한다. ..with regards와 관련있다. ... sriparna – sriparna

1

이것은 단지 요약 일 뿐이지 만 기본적으로 사용자의 num__init__() 전화 번호 self.num으로 들어가야합니다. 그래서 :

다음
class supermarket: 
    def __init__(self): 
     self.ini = '' 
     self.num = int(input('enter a no.')) 
    # etc. 

는 속성에 액세스하려면 :

pallavi = supermarket() 
pallavi.num # No parentheses needed 

내가 지금에 갈 시간이 없다고 파이썬의 클래스에 많은 더있다,하지만 나는 한 가지에 드릴게요 : 당신이하고있는 것을 알기 전까지, 클래스의 모든 과제는 클래스 정의 자체가 아닌 함수 안에 있어야합니다. 예를 들어, num=int(input("enter a no.")) 문과 같은 함수가 아니라 클래스에있는 = 기호가있는 문은 실패하고 그 이유는 알 수 없습니다.

이유는 "클래스 변수"와 "인스턴스 변수"의 차이점이지만 그 개념과 씨름을하기에는 너무 이르다. 그래도 the Python tutorial's chapter on classes을 살펴 보는 것이 좋습니다. 이 튜토리얼의 일부를 이해하지 못한다면 아직 걱정하지 마십시오. 단지 몇 가지 개념을 배우고, 코드를 작성하고, 나중에 다시 돌아가서 튜토리얼을 다시 읽고 몇 가지 개념이 명확해질 수 있습니다 .

행운을 빈다.

+0

@ user3732914 - 별도의 질문이있는 경우 새로운 질문으로 질문하는 것이 좋습니다. StackOverflow는 주석을 약 500 자로 제한하며 코드 형식에 대한 액세스 권한을 부여하지 않습니다. 새로운 질문을 게시 한 다음 여기에 의견에 대한 링크를 넣는 것이 좋습니다. – rmunn