하나의 프로세스에서 너무 많은 파일을 열게되면 시스템 자원을 낭비하게 되기 때문에 사용하지 않는 파일은 닫아주는 것이 좋습니다.
단 프로세스가 종료되면 파일은 자동으로 닫히기 때문에 프로세스 전반적으로 이용하는 파일의 경우에는 수동으로 닫아주지 않아도 됩니다.
close ()는 파일 설명자를 닫아 더 이상 파일을 참조하지 않고 재사용할 수 있습니다.
연결되고 프로세스가 소유한 파일에 보유된 모든 레코드 잠금(fcntl(2))은 제거됩니다.
fd가 기본 열린 파일 설명을 참조하는 마지막 파일 설명자(open(2))인 경우 열린 파일 설명과 연결된
리소스가 해제됩니다.
파일 설명자가 unlink(2) 를 사용하여 제거된 파일에 대한 마지막 참조인 경우 파일이 삭제됩니다.
items함수를 사용하면 딕셔너리의 값을 반복할때 키와 값을 접근하기가 매우 유용해집니다.
>>> car = {"name" : "BMW", "price" : "7000"}
>>> for key, val in car.items():
... print("key : {} value : {}".format(key,val))
key : name value : BMW
key : price value : 7000
지금까지 봤던 클래스 안에 있던 self에 대해 찾아보니 "인스턴스 자신", "그 시점의 자신", "메소드의 임의의 인수"등 다양하게 부르고 있었다. 그러나 클래스의 구성을 취득할 때에 정형의 구문으로써 기억해두면 괜찮은 것 같다.
__init__의 이해
self와 나란히 클래스 내에 등장하는 __init__에 대해서는 알아보자. __init__에 대해 간단히 정리하자면, 다음과 같다.
컨스트럭터라고 불리는 초기화를 위한 함수(메소드)
인스턴스화를 실시할 때 반드시 처음에 호출되는 특수한 함수
오브젝트 생성(인스턴스를 생성)과 관련하여 데이터의 초기를 실시하는 함수
__init__()은 반드시 첫 번째 인수로 self를 지정해야한다. self에는 인스턴스 자체가 전달되어 있다. 이로 인해, 최과 메소드 내에 인스턴스 변수를 작성하거나, 참고하는 것이 가능해진다. 클래스를 생성할 때에 지정한 인수는 초기화 메소드의 2 번째부터 작성해 나가면 된다.(something)
class SomeClass:
def __init__(self,something):#constructor
self.something = something
클래스 구성에서 정보를 유지하기 위한 중요한 구성으므로 빼놓을 수 없는 것이라고 생각하면 좋을 것 같다. 이 구문에 의해 객체 생성할 때, 정보의 추가 기재를 간단히 할 수 있다.
예를 들어, 여러 개의 정보를 변수로하는 클래스 구문에서의 처리를 실행하고 싶은 경우는 다음과 같이 쓸 수 있다.
class MyStatus:
def __init__(self,age,name,height,weight):
self.age = age
self.name = name
self.height = height
self.weight = weight
def print_name(self):
print(self.name)
def print_age(self):
print(self.age)
def print_height(self):
print(self.height)
def print_weight(self):
print(self.weight)
a = MyStatus(34,"yamada",170,78)