2017-04-18 3 views
0

파이썬으로 코드를 작성하고 의심 스럽습니다. 부적절한 것 같지만 그것을 극복 할 수는 없습니다. 여기파이썬 모듈 사용

import math 
print math.sqrt(9) 

내가 (메소드 SQRT을 가진 클래스로 수학 (모듈)를 참조하십시오) : 나는 모듈을 수입하고 다음과 같이 사용할 때 일이다. 그렇다면 클래스의 객체를 만들지 않고 클래스를 어떻게 직접 사용할 수 있습니까? 나는 기본적으로 클래스와 객체 사이의 추상화를 여기에서 이해할 수 없다.

+0

모듈은 가져올 때 인스턴스화됩니다. –

답변

1

모듈은 클래스와 달리 객체와 비슷합니다. 모듈을 "인스턴스화"하지 않고 각 모듈의 인스턴스는 하나 뿐이며 import 문을 사용하여 액세스 할 수 있습니다.

>>> import math 
>>> type(math) 
<type 'module'> 

각 모듈은 변수들 및 방법들의 다른 세트를하려고 :

구체적으로, 모듈 형 '모듈'의 대상이다.

모듈은 처음 가져올 때마다 파이썬에 의해 인스턴스화됩니다. 인스턴스화 된 모듈 sys.modules에 저장됩니다

당신이 그것을 가져온 경우 AFAIK (수학 만 더 같은) 모든 파이썬 모듈을 인스턴스화
>>> import sys 
>>> 'math' in sys.modules 
False 
>>> import math 
>>> 'math' in sys.modules 
True 
>>> sys.modules['math'] is math 
True 
+0

감사합니다. Kos. 이것은 확실히 도움이됩니다. – Rohit

1

. 몇 번이나 그들이 당신에게 묻습니다. 딱 한번! 모든 모듈은 싱글 톤입니다.

위의 진술만으로는 충분하지 않으므로 그 내용을 자세히 살펴 봅시다. 다음과 같이 "p.py"일부 코드가 포함 된 말 (모듈은 기본적으로 "평"확장자로 끝나는 파일) 파이썬 모듈을 만들고 :

In p.py 

print "Instantiating p.py module. Please wait..." 
# your good pythonic optimized functions, classes goes here 
print "Instantiating of p.py module is complete." 

및 q.py에

import p 
그것을 가져 오십시오

당신은 당신이 볼 수 q.py 실행할 때 ..

Instantiating p.py module. Please wait... 
Instantiating of p.py module is complete. 

지금 당신이 그것의 인스턴스를 생성 있나요? 아니! 하지만 여전히 사용 준비가되어 있습니다.

0

귀하의 경우 math은 (는) 클래스가 아닙니다. import math 전체 모듈 math을 가져올 때. 당신은 도서관 (그것의 개념)의 포함처럼 그것을 볼 수 있습니다. 당신이 (모든 프로그램에 포함하지하기 위해) 전체 모듈을 가져올 피하려면
, 당신은 같은 것을 할 수 있습니다

from math import sqrt 
print sqrt(9) 

sqrt이 모든 것을 수입되지 않고이 방법 math 모듈

0

여기서 sqrt() 메서드를 가진 클래스로 math(module)을 참조하십시오. 그렇다면 클래스의 객체를 만들지 않고 클래스를 어떻게 직접 사용할 수 있습니까? 나는 기본적으로 클래스와 객체 사이의 추상화를 여기에서 이해할 수 없다.

모듈을 가져 오면 모듈 개체가 만들어집니다.open('file.txt')을 사용할 때와 마찬가지로 파일 객체가 만들어집니다.

당신은 클래스 이름을 참조하여 그것에서 객체를 생성하지 않고 클래스를 사용할 수 있습니다

class A: 
    value = 2 + 2 
A.value 

클래스 A는 고마웠다는 내장 클래스 클래스를 작성하는 데 사용되는 클래스 type의 개체입니다. 파이썬의 모든 것은 하나의 객체입니다.

클래스를 호출 할 때 객체를 만드는 방법이 A()입니다. * 때로는 객체가 import과 같은 명령문으로 작성되어 def이 함수 객체를 만들고 class은 다른 객체 및 다른 많은 명령문을 만드는 클래스 객체를 만듭니다.