2012-09-26 4 views
2

온라인 검색은이 문제에 도움이되지 않았습니다. 몇 가지 클래스로 모듈을 만들고 테스트하려고합니다. 나는 첫번째 부분을 통과 할 수 없었다. 나는 "main"메소드에서 속성을 볼 수 있도록 3 개의 속성과 getter 메소드로 간단한 클래스를 만들었습니다 (추측)클래스 모듈을 가져 와서 테스트하는 방법

나중에 사용할 수 있도록이 클래스의 몇 가지 객체를 만들어야합니다.

클래스 정의는

class Person: 
    def __init__(self, n, a, s): 
     self.name = n 
     self.age = a 
     self.sex = s 
    def getAge(self): 
     return self.age 
    def getSex(self): 
     return self.sex 

나는 test.py 파일에이 파일을 저장한다 내가 그것을 가져하지만 인스턴스화 개체를 할 때 나는이 같은 오류가 계속 쉘에서

Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    x = Person('myname', 10, 'm') 
NameError: name 'Person' is not defined 

test.py는 C : /Python3.x 디렉토리에 있으므로이 오류가 발생하지 않습니다.

쉘에 전체 클래스를 입력하고 객체를 인스턴스화하면 모든 것이 작동하지만 시간이 지남에 따라 모듈이 커질 것이므로 내 경우에는 쓸모가 없습니다.

도움이 필요하신 경우에만 답장하십시오. 쉘 없이는 설명하지 않는 동일한 자습서로 저를 보내지 마십시오. 나는 모듈로 작업하고 그 오류의 의미를 이해해야한다.

+1

처음 보는 것은'class Person (object)'이어야한다는 것입니다. 그러나 우리는 당신이 어떻게 수입에 대해 더 알고 있어야합니다. – LarsVegas

+0

'import test' (또는'from test import *')를 사용하여 다른 모듈과 마찬가지로 모듈을 명시 적으로 가져와야합니다. –

+0

Java에서 Python을 사용하는 것처럼 들리 겠지만 ("getter and setters"를 작성했습니다. "main method"라고 부릅니다). 이것에 대한 좋은 읽을 거리 : http://dirtsimple.org/2004/12/python-is-not-java.html – chthonicdaemon

답변

6

클래스는 아마도 object에서 파생되어야하지만 오류의 원인은 아닙니다. 명시 적으로 가져 오지 않은 이름에 액세스하려했을 것입니다. 전체 모듈 또는 모듈의 이름을 가져올 수 있습니다.

import test 
test.Person() 

또는

from test import Person 
Person() 

또는 모두

. 오류는 없지만별로 의미가 없습니다.

다른 언어의 동작을 모방하기 위해 from test import *을 입력하려고 할 수도 있지만, 대부분의 경우 파이썬에서는 좋지 않은 스타일로 간주됩니다. 암시 적보다 암묵적인 것이 낫습니다.

가져 오기가 작동하는 방식에 대해 자세히 알아 보려면 import testdir(test)을 시도하십시오. 또는 import itertoolsdir(itertools) 또는 Werkzeug과 같은 멋진 코드베이스를 다운로드하고 코드가 어떻게 구성되어 있는지 확인한 다음 REPL을 통해 탐색 해보십시오.

+0

도움을 주셔서 감사합니다. 문제 해결됨 – Alberto

관련 문제